2018-06-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst, contrib/rpm/environment-modules.spec.in: Release of version
  4.1.3

2018-06-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/profile.sh.in: Detect shell with variables in profile.sh script  To
  improve shell detection code that until now was relying on a parent process
  name check, some shell variables will be used to determine the current shell
  name.  $BASH and $ZSH_NAME variables will be looked at if defined to
  determine calling shell name.  Doing so will avoid some external command
  call when running bash or zsh. Also if people source /etc/profile script in
  their own bash or zsh script it will correctly determine calling shell name,
  as parent process in this case is the script name.  Cannot determine shell
  name on ksh with a variable due to the lack of a consistent detection
  mechanism across all ksh flavors [1].  Fixes #173  [1]
  https://books.google.fr/books?id=53zaxy423xcC&pg=PA161

2018-06-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/modulefile.rst: doc: desc. 'getenv' command in modulefile(4)
  man

2018-05-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles.deep/moddalias/.modulerc,
  testsuite/modulefiles.deep/moddalias/dir1/1,
  testsuite/modulefiles.deep/moddalias/dir2/.ignored,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/021-unload.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/050-whatis.exp,
  testsuite/modules.80-deep/999-cleanup.exp,
  testsuite/modules.90-avail/070-full.exp: If subdir is empty do not update
  parent dir if overwritten  During a modulefile lookup in getModules,
  directory definitions are updated if some empty directories are found in
  them.  Do not attempt this directory definition update when finding an empty
  directory if parent directory has been overwritten by an alias definition
  for instance.  Fixes #170

2018-05-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/bin/install_test_sh,
  testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/020-module.exp, testsuite/modulefiles/alias/3.0,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.90-avail/070-full.exp: Define shell alias with special
  chars escaped  When producing code to output shell alias definition,
  escaping of special characters was missing until now in renderSettings
  procedure.  Code to bake shell alias has been fixed to work in a similar way
  than for environment variable with full range of shell special characters
  escaped.  Translation of $n/$* in !!:n/!* on csh-like shells is maintained
  for compatibility with v3. To improve this compatibility, a \ prior to $
  disables translation on csh (like with v3), then after \$ is translated in $
  for all shells.  Adapt testsuite to use value escaping over expected output
  result for shell alias (like done for environment variable). Adapt
  consequently all shell alias tests in 50-cmds/07*.  Add test in
  50-cmds/076-alias-sub to demonstrate escaping of complex shell alias. Use
  modulefile from this new test within install testsuite to garanty shell
  alias produce is effective on shell sessions. Check availability of tools
  used by this alias (grep, tr, awk) to determine if install test can be
  launched on current system.  Fixes #165

  * testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.70-maint/120-autoinit.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp: ts: fix special chars
  escaping code in values  Add more special characters to the escaping list
  for regular shells. And fix code to over escape special characters relative
  to regular expression when regexp mode is enabled.

  * testsuite/bin/install_test_sh, testsuite/install.00-init/040-subshell.exp:
  ts: fix word splitting for zsh test in install suite

2018-05-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Quote csh
  generated code to pass it to eval  Brace modulecmd.tcl call in module csh
  alias with quotes to pass quoted content to the shell evaluation. Use :q
  modifier on !* to escape quotes passed as arguments to the module command

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in: init: init/export
  _module_raw if stderr attached to term  To get coherent with the test made
  by modulecmd.tcl to determine if autoinit sub-command has to produce code
  for the '_module_raw' shell function, export this function (or initialize it
  on compat mode) if stderr is attached to a terminal.  Was previously testing
  stdout, whereas modulecmd.tcl is checking stderr, which led to
  inconsistencies as described in [1].  Fixes #169  [1]
  https://bugzilla.redhat.com/show_bug.cgi?id=1575479

2018-04-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_v3_v4.rst: doc: desc. MANPATH special treatment on compat
  version  Describe the difference behavior between Modules 4+ and
  compatibility version regarding how append-path/prepend-path commands handle
  the MANPATH environment variable when unset. Helps clarify [1].  [1]
  https://bugzilla.redhat.com/show_bug.cgi?id=1564899

2018-04-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles/setenv/0.6,
  testsuite/modules.50-cmds/029-setenv-env.exp,
  testsuite/modules.90-avail/070-full.exp: Make setenv alter ::env() on
  help/test/whatis modes  Set the variable passed to 'setenv' procedure in
  ::env() array to make it available for later use during the modulefile
  evaluation.  Add 50-cmds/029-setenv-env tests to check this ::env() array
  change over all evaluation mode. Adapt 50-cmds/350-allin to check this
  change against 'whatis' mode.  Fixes #160

2018-04-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/modbad/empty,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.90-avail/070-full.exp: ts: empty mod cmd call check in
  50/151-module-onlytop

2018-03-31  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst, contrib/rpm/environment-modules.spec.in: Release of version
  4.1.2

  * testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.80-deep/080-access.exp: testsuite: fix some re tests for
  special ts dir

2018-03-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_sh: testsuite: correct IFS setup in
  install_test_sh for dash  The IFS=$';' notation on dash makes $ character
  part of field separator list.

2018-03-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_csh, testsuite/install.00-init/080-args.exp,
  testsuite/modulefiles.other/putsvar: testsuite: add 080-args test to install
  suite  Add install non-regression tests to check handling of arguments
  passed on the command line of shell langs of passed to the module function
  on other langs.  Test pass of empty string, string containing space,
  variable reference, espace stuff and so on.  Hardwire some test in
  install_test_csh script to correctly pass single quote to the tested module
  command.

  * testsuite/modules.70-maint/120-autoinit.exp: testsuite: adapt
  70/120-autoinit tests to recent changes

2018-03-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Add '\' to the escape char list
  for R  "Unless it's escaped, \ is interpreted as a special character that
  identifies sectioning and mark-up macros." [1]  Also temporary fix escaping
  code for 70-maint/120-autoinit tests: no re escaping for R (need re escaping
  to better cope with lang escaping).  [1]
  https://developer.r-project.org/parseRd.pdf

  * testsuite/bin/install_test_cmake: testsuite: fix cmake test install script
  for args >2

  * modulecmd.tcl.in: Fix parameter expansion on sh-shells in quar mode
  Protect "$@" from the 'eval' command added when quarantine mode is
  activated.

2018-03-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_cmake, testsuite/bin/install_test_perl,
  testsuite/bin/install_test_python, testsuite/bin/install_test_r,
  testsuite/bin/install_test_ruby, testsuite/bin/install_test_tcl: testsuite:
  check no arg or empty string arg  Adapt tests of install suite to be able to
  call module function with no passed arg if tested command equals to "NOARG".
  Also adapt these tests to call module with an empty string argument if
  tested command equals to empty string.

  * modulecmd.tcl.in: Fix Python module func to accept no arg  Adapt module
  function for Python to accept being called with no argument.

  * modulecmd.tcl.in: Empty module cmd clears arg list  If an empty command
  name is passed, it is interpreted as "help" command. For more consistency
  argument list (after command name) is cleared in this situation to always
  get the general usage message rather triggering the help mode of an
  arbitrary modulefile.

2018-03-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_cmake, testsuite/bin/install_test_perl,
  testsuite/bin/install_test_python, testsuite/bin/install_test_r,
  testsuite/bin/install_test_ruby, testsuite/bin/install_test_tcl,
  testsuite/install.00-init/020-module.exp,
  testsuite/install.00-init/022-module-compat.exp,
  testsuite/install.00-init/030-options.exp,
  testsuite/install.00-init/060-quar.exp,
  testsuite/install.00-init/070-stderrtty.exp: testsuite: separate cmd args
  with ','  Adapt tests of install suite to use ',' character as argument
  separator (on same command) for non-pure shell languages (Tcl, Perl, Python,
  Ruby, Cmake and R).  Help to distinguish a separator between args from a
  whitespace within an arg.

  * modulecmd.tcl.in: Fix module func parameter expansion on Perl  To
  correctly handle parameter containing whitespace character or empty string
  parameter.

2018-03-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Fix module func parameter expansion on CMake  To
  correctly handle parameter containing whitespace character or empty
  elements. For the latter case, command definition must be adapted to the
  number of args to be able to pass, to some extend (<5 args) empty string
  element to modulecmd. There is no other way to achieve empty string element
  argument as empty strings are skipped from ${ARGV}. [1]  [1]
  https://gitlab.kitware.com/cmake/cmake/issues/16341

2018-03-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Fix module func parameter expansion on R  To correctly
  handle parameter containing whitespace character.

2018-03-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Fix module func parameter expansion on Ruby  To
  correctly handle no passed parameter or parameter containing whitespace
  character.

  * modulecmd.tcl.in: Fix module func parameter expansion on fish-shell  To
  correctly handle parameter containing whitespace, quote, escape characters.

  * modulecmd.tcl.in: Fix module func parameter expansion on sh-shells  To
  correctly handle parameter containing whitespace character.

2018-03-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.70-maint/190-emptyarg.exp: testsuite: add
  70-maint/190-emptyarg tests  Test all module commands called from cmdline
  with an empty string argument. Move pre-existing empty-string-argument tests
  in this new test file.

2018-03-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Return empty res if mod name empty on
  getLoadedMatchingName

  * modulecmd.tcl.in: Report error if path is empty string on cmdModuleUnuse
  Like done on cmdModuleUse.

  * modulecmd.tcl.in: Return empty res if path empty on getAbsolutePath

  * modulecmd.tcl.in: Raise error if coll name is empty  Add check in
  getCollectionFilename procedure to raise error if passed collection name is
  an empty string. Makes collection-related commands quit in error if empty
  collection name is provided (save, restore, saverm, saveshow, is-saved).  No
  collection name provided still activate default collection, thus no error
  raise.

  * modulecmd.tcl.in: Fix default arg for cmdModule{Save*,Restore} procs
  Default collection name set as default 'coll' argument value is 'default'.
  Change default value of argument, was '', to directly match default
  collection name. It enables to distinguish between an empty string argument
  and default argument value.

2018-03-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Fix handling of empty list on Tcl8.4 lreverse proc  Was
  previously returned a list with 1 empty element instead of a list with 0
  element.

2018-03-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: No skip of empty arg on cmdModuleHelp  Will be handled
  by getPathToModule procedure, who will raise error on empty module name.

  * modulecmd.tcl.in, testsuite/modulefiles/module/empty,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.90-avail/070-full.exp: Report error when empty name passed
  to getPathToModule  Triggered with 'module load ""' call in modulefile.
  Helps to know what is going on.

2018-03-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/example/siteconfig.tcl-1,
  testsuite/modules.00-init/120-siteconfig.exp: testsuite: fake win platform
  to check path var handling  Separator ';' is used instead of ':' on Windows
  platform. Add a test leveraging siteconfig.tcl-1 to check path variable
  handling on a fake Windows platform.  Set/get default path variable
  separator with new getPathSeparator procedure. This way, global variable
  g_def_separator is defined after parsing the siteconfig.tcl.

  * testsuite/modulefiles/info/shellsexp,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.70-maint/120-autoinit.exp: testsuite: add 'cmd' to the
  test shell list

  * modulecmd.tcl.in: Improve Windows cmd shell support

  * modulecmd.tcl.in, testsuite/example/siteconfig.tcl-1, testsuite/mode,
  testsuite/modules.90-avail/070-full.exp: Fetch terminal width on Windows
  with 'mode' cmd  Add test with fake 'mode' command to run on Linux.

2018-03-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: check stty can change
  width before tests

  * testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/032-prepend.exp,
  testsuite/modules.50-cmds/040-append.exp: testsuite: fix tests when value
  contains parenthesis  Escape the environment value like modulecmd does when
  producing shell code. Careful when test is performed in regexp mode.

2018-03-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/022-module-compat.exp,
  testsuite/install.00-init/030-options.exp: testsuite: adapt install suite
  for compat on Cygwin

  * modulecmd.tcl.in: Rewrite if/return tests in return/expr

  * Makefile, Makefile.inc.in, configure: install: handle modulecmd exe ext on
  Cygwin  Add EXEEXT Makefile variable in configure/Makefile process to append
  on Cygwin a '.exe' extension to modulecmd binary built.

  * modulecmd.tcl.in: Remove unneeded dir 'reglob' for Cygwin in findModules
  As tested, glob on Cygwin does not change symlink involved in $dir so it
  does not seem useful anymore to 'reglob' $dir on findModules procedure.

  * modulecmd.tcl.in: Remove unneeded symlink transformation for Cygwin
  Symlink created on Cygwin does not get an automatic ".lnk" suffix extension.
  ".lnk" shortcut made on Windows cannot be interpreted as a symlink either on
  Cygwin or Windows cmd. Tcl will not recognize a directory or a modulefile
  when looking at these ".lnk" shortcut.  Remove the .lnk file name
  transformation as it is not useful. In addition, 'isWin' returns false on a
  Cygwin environment as detected platform on this tool equals to 'unix' not
  'windows'.

2018-03-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.10-use/080-access.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.20-locate/081-access-rc.exp,
  testsuite/modules.60-initx/080-access.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.80-deep/080-access.exp: testsuite: fix access tests for
  Cygwin  Check file permission can be edited and check a file in a locked
  directory is readable or not. Adapt access tests depending on these check
  results.  No access test is perfomed if file permission cannot be edited.

  * testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/050-crossshell.exp: testsuite: adapt install suite
  for Cygwin

  * testsuite/bin/install_test_csh: testsuite: fix csh empty string cmp in
  install_test_csh

  * testsuite/modules.50-cmds/040-append.exp: testsuite: fix truncated csh
  test for escaped content

2018-03-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.50-cmds/095-uname.exp: testsuite: fix uname test for
  Cygwin

  * testsuite/modules.10-use/030-use.exp: testsuite: use modules-specific vars
  for tests in 10-use/030-use

  * configure: install: look for 'make' on Cygwin

2018-03-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/home/.module/.target: Rm uneeded coll name
  test in cmdModuleSavelist

  * testsuite/example/siteconfig.tcl-1,
  testsuite/modules.00-init/120-siteconfig.exp: testsuite: test lm accessor in
  00-init/120-siteconfig

2018-03-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.70-maint/180-reload.exp: testsuite: add 'reload' cmd
  tests in 70-maint

  * testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.90-avail/020-single.exp: testsuite: check command
  nicknames

  * modulecmd.tcl.in: Process mod info before any content output on 'list' cmd

  * modulecmd.tcl.in, testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/153-is-loaded.exp,
  testsuite/modules.70-maint/157-info-loaded.exp,
  testsuite/modules.90-avail/020-single.exp: Detect inconsistent loaded
  environment state  When needing to correlate the information from the
  LOADEDMODULES and the _LMFILES_ environment variables.  Does not affect
  module commands not requiring correlation of these informations, like
  whatis/avail. Error raised on load, unload, switch, reload, purge, list,
  save and restore commands.  May affect info-loaded or is-loaded commands if
  module passed as argument to these command is specified as a full path
  modulefile.

2018-03-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Set/get accessors for g_loadedModules{,Files} arrays
  Define set/get accessor procedures to handle the g_loadedModules and
  g_loadedModuleFiles arrays.  Trigger in the get accessors the load of
  currently defined information in LOADEDMODULES and _LMFILES_ in the two
  arrays, by calling the cacheCurrentModules procedure.  Make this loading
  procedure perform its work only once by using a global g_lm_info_cached
  flag.  cacheCurrentModules is not called anymore at the start of the
  modulecmd execution but only once and when needed.

2018-03-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/071-args.exp: Refactor cmd arg
  nb test in module proc

  * modulecmd.tcl.in: Refactor command name setup in module proc

  * modulecmd.tcl.in: Refactor calling level check for cmd in module proc

  * modulecmd.tcl.in: Resolve module cmd alias/shortcut prior running cmd

  * testsuite/example/siteconfig.tcl-1,
  testsuite/modules.00-init/120-siteconfig.exp: testsuite: file read w/o err
  report in 00/120-siteconfig

  * testsuite/modules.80-deep/080-access.exp: testsuite: test dfl res when
  sibbling dir locked  Add test in 80-deep/080-access to remove access to a
  modulefile from a sibbling directory than implicit default for this module.
  Check that implicit default is not impacted by its sibbling change.

2018-03-03  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/153-is-loaded.exp: Ignore empty path element in
  _LMFILES_  If _LMFILES_ environment variable contains empty module element
  (for instance when it equals to '/path/to/mod1::/path/to/mod2'), this empty
  element is ignored.  This way it ensures all elements from the _LMFILES_
  variable are non-empty string.  Add tests to check module commands against a
  _LMFILES_ variable containing empty element.

  * Makefile: install/testsuite: dl nagelfar from alt. location  If primary
  link is not ok.

2018-03-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/153-is-loaded.exp: Ignore empty path element in
  LOADEDMODULES  If LOADEDMODULES environment variable contains empty module
  element (for instance when it equals to 'mod1::mod2'), this empty element is
  ignored.  This way it ensures all elements from the LOADEDMODULES variable
  are non-empty string.  Add tests to check module commands against a
  LOADEDMODULES variable containing empty element.

  * modulecmd.tcl.in, testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/100-path.exp,
  testsuite/modules.70-maint/110-paths.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.70-maint/155-is-used.exp,
  testsuite/modules.90-avail/070-full.exp: Ignore empty path element in
  MODULEPATH  If MODULEPATH environment variable contains empty path element
  (for instance when it equals to '/path/to/dir1::/path/to/dir2'), this empty
  element is ignored.  This way it ensures all elements from the MODULEPATH
  variable are non-empty string.  Add tests to check module commands against a
  MODULEPATH variable containing empty element.

2018-03-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst, init/bash.in, init/ksh.in, init/sh.in, init/zsh.in,
  testsuite/bin/install_test_sh, testsuite/install.00-init/070-stderrtty.exp:
  init: shield autoinit res from param expansion on sh-shells  Quote autoinit
  result for eval interpretation on SH-kind shells to avoid parameter
  expansion to randomly occur on generated code depending on file or directory
  names of current working directory.  Test basic module commands in install
  testsuite with a 'something (test)' file existing in current working
  directory.  Fixes bug reported at [1].  [1]
  https://bugzilla.redhat.com/show_bug.cgi?id=1549664

  * modulecmd.tcl.in: Fix whatis result on empty dir name

  * modulecmd.tcl.in, testsuite/modulefiles/puts/8,
  testsuite/modules.50-cmds/310-puts.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.90-avail/070-full.exp: Call real 'puts' command in caller
  context  To be able to 'puts' content on opened channels, the 'puts' command
  should be executed from the modulefile interpreter context. Elsewhere,
  master interpreter does not know about the channels opened in its
  sub-interpreters.  Adapt interpreter setup to add a command renaming step,
  to avoid the puts modulefile alias to overwrite the original puts command.
  puts modulefile alias now also pass the caller interpreter reference as
  first argument to be able to execute the original puts command, renamed
  _puts, within context of this caller interpreter.  Handle wrong argument
  number error in putsModfileCmd to report an error for 'puts' command rather
  '_puts' which should not be known by users.  Add non-regression test to
  check puts command against opened channel.  Fixes #157

2018-02-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/example/siteconfig.tcl-1,
  testsuite/modules.50-cmds/130-conflict-full.exp: testsuite: load again
  conflict test in 50/130-conflict-full

  * testsuite/example/siteconfig.tcl-1,
  testsuite/modules.00-init/120-siteconfig.exp: testsuite: terse+numbered disp
  test in 00/120-siteconfig

  * modulecmd.tcl.in: Rely on elt count in displayElementList  Do not check
  element count before calling displayElementList, rely on element count made
  by displayElementList procedure to return if no element has to be displayed.

  * testsuite/example/siteconfig.tcl-1,
  testsuite/modules.00-init/120-siteconfig.exp: testsuite: parseAccessIssue
  custom msg in 00/120-siteconfig

  * testsuite/modules.70-maint/120-autoinit.exp: testsuite: MODULE_VERSION set
  prior autoinit test

  * modulecmd.tcl.in, testsuite/home/coll7, testsuite/home/coll8,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Handle full path mod in
  collection  Enable to save and restore collections containing full path
  modulefiles eventually with no modulepath defined.  Valid collection test is
  changed from 'no modulepath saved' to 'no modulepath AND no loaded module
  saved'.

  * modulecmd.tcl.in, testsuite/home/.module/coll6.target,
  testsuite/modulefiles.path1/novercross,
  testsuite/modulefiles.path2/novercross,
  testsuite/modulefiles.path3/novercross,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Rewrite
  getSimplifiedLoadedModuleList proc  Use helper list if it is provided rather
  than only in case no MODULEPATH is defined.  Rework name simplification code
  to make use of getPathToModule procedure instead of listModules. Loop around
  as long as parent name matches tested modulefile, so "foo/bar/version" can
  returned "foo" if "foo/bar/version" is default version of "foo".  Add
  non-regression tests mixing deep and virtual modulefiles whose definitions
  are spread through multiple modulepaths. Help checking default versions are
  correctly detected in complex situation.

2018-02-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/home/coll5, testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/999-cleanup.exp: testsuite: prepended modulepath
  tests in 61-coll

  * modulecmd.tcl.in, testsuite/modulefiles/append/6.0,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: bad ref counter tests in
  50-cmds/040-append

  * .travis.yml: travis: remove already installed deps on OS X  Which led to
  error when an upgrade is available for an already installed brew package.

  * testsuite/modules.10-use/030-use.exp: testsuite: test path with extra ./..
  in 10-use/030-use

  * testsuite/example/siteconfig.tcl-1,
  testsuite/modules.90-avail/070-full.exp, testsuite/stty: testsuite: simulate
  solaris stty in 90-avail/070-full

  * modulecmd.tcl.in, testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/050-saverm.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/999-cleanup.exp,
  testsuite/modules.70-maint/154-is-saved.exp: Check HOME var exists before
  using in findCollections  Add a test for every collection-related commands
  to check behavior when HOME variable is not defined.

  * testsuite/modules.10-use/070-unuse.exp: testsuite: unuse with ref>1 in
  10-use/070-unuse

  * testsuite/example/siteconfig.tcl-1,
  testsuite/modules.90-avail/070-full.exp: testsuite: no flag report test in
  90-avail/070-full

2018-02-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.70-maint/040-list.exp: testsuite: regular output test in
  70-maint/040-list

  * testsuite/modulefiles/system/1.0,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.90-avail/070-full.exp, testsuite/systest0: testsuite:
  display/exit 0 tests in 50-cmds/140-system

  * testsuite/modulefiles/append/5.0,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: large val append test in
  50-cmds/040-append

  * testsuite/modules.90-avail/070-full.exp: testsuite: small term width test
  in 90-avail/070-full

  * testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.70-maint/170-contact.exp: testsuite: add
  70-maint/170-contact test  Check error message of a broken modulefile when
  MODULECONTACT environment variable is set.

  * modulecmd.tcl.in: Switch over state env vars rather if/elseif

2018-02-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/loc_sym/alias11,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: alias def loop test in
  20-locate/040-alias

  * modulecmd.tcl.in, testsuite/modules.10-use/030-use.exp: testsuite: test
  modpath var ref in 10-use/030-use

  * contrib/etc/rc-modulepath: contrib: add example global rc file  Ensuring
  MODULEPATH definition, if found empty or undefined. This configuration helps
  fixing [1].  [1] https://bugzilla.redhat.com/show_bug.cgi?id=1139165

  * testsuite/modulefiles/loc_sym/alias10,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: test 'module-info alias'
  on non-alias mod

2018-02-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/uname/cache, testsuite/modulefiles/uname/unk,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: add uname tests in
  50-cmds/095-uname  Check uname internal cache value mechanism and result
  obtained when an unknown sub-command is passed to uname.

  * testsuite/modules.00-init/100-pager.exp: testsuite: 'puts stderr' test in
  00-init/100-pager  Test that stderr output made during modulefile evaluation
  comes in correct order regarding other debugging information when pager is
  enabled.

2018-02-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/example/siteconfig.tcl-1,
  testsuite/modules.00-init/120-siteconfig.exp: testsuite: add 120-siteconfig
  tests in 00-init suite

  * testsuite/modules.00-init/100-pager.exp: testsuite: check bad cmd set as
  pager  Add tests to 100-pager in 00-init suite to check situation where
  defined pager command refers to a non-existent file.

  * testsuite/install.00-init/070-stderrtty.exp: testsuite: check args
  handling in 070-stderrtty  Set a directory with name starting by '$' to
  check if shell arguments are correctly escaped.  Complements #154.

  * testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/070-stderrtty.exp: testsuite: add 070-stderrtty
  tests to install suite  Check installed Modules version when STDERR channel
  is attached to a TTY.

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Improve
  passed args protection on _moduleraw  As suggested by @degremont on #154, $@
  is better suited than $* when surrounded by double-quotes to escape passed
  arguments.  Improve fix for #154.

2018-02-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml, Makefile, testsuite/example/siteconfig.tcl-1,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/100-pager.exp,
  testsuite/modules.70-maint/120-autoinit.exp: testsuite/travis: add cases
  forcing term attach state

2018-02-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Change 'global var' to '::var'
  Work on global variables in procedure with '::var' syntax rather declaring
  them with 'global' command. Linking global variable to local scope with
  'global' command is expensive in terms of performance and only useful if
  variable is accessed more than 15 times [1].  [1] https://wiki.tcl.tk/1177

2018-02-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst: doc: fix typo in v4.1.1 release notes

  * MIGRATING.rst, NEWS.rst, contrib/rpm/environment-modules.spec.in: Release
  of version 4.1.1

  * contrib/rpm/environment-modules.spec.in: rpm: add procps in build
  requirements  As 'ps' is now checked at ./configure time.

2018-02-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst, modulecmd.tcl.in,
  testsuite/modules.00-init/100-pager.exp: Ignore LESS env var for pager
  configuration  As for the PAGER environment variable, do not consider
  anymore the LESS environment variable for Modules pager configuration in
  order to avoid side effects coming from a general pager configuration not
  compatible with Modules pager handling.  Previously when LESS was spotted
  defined, default paging command options were blanked if default pager was
  'less'. With this change, even if LESS environment variable is defined,
  default paging command options are still taken into account.  Adapt doc and
  tests accordingly.  Complements #146

  * contrib/rpm/environment-modules.spec.in: rpm: move hostname requirement to
  compat subpackage  As suggested by RH#1545369 [1]  [1]
  https://bugzilla.redhat.com/show_bug.cgi?id=1545369

2018-02-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml: travis: add OS X test cases  Cannot install R currently on OS
  X image (homebrew issue with gcc install). Should be added later on.

  * modulecmd.tcl.in: Zero tty cols equals cols not found  'stty size' on OS X
  Travis-CI environment returns '0 0'

  * modulecmd.tcl.in: Protect args passed to _moduleraw SH function  Avoid
  current working directory content to interfere with the arguments to pass
  from module to _moduleraw function on SH-kind shells when shell is attached
  to a terminal.  Fixes #154

2018-02-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/Makefile: install: workaround Linux+Make 3.81 '\\\n' issue  Was
  affecting tests on Ubuntu Trusty

2018-02-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/060-quar.exp,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp: DYLD/LD vars cannot be
  path-updated on OSX if SIP-enabled  Path-variable handling is not effective
  on OSX for DYLD and LD variables in case System Integrity Protection (SIP)
  id enabled: in this situation these variables are not exported in subshell
  context, so they appear undefined to modulecmd.tcl.  Nullify modshare
  variable content for the moment, do not print warning message. Adapt the
  DYLD/LD test cases when running on OSX if SIP is detected enabled.

  * init/Makefile: install: more portable \n to build init/modulerc  That also
  works on OS X.

2018-02-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/050-crossshell.exp: testsuite: fix sh/ksh
  sub/cross shell tests on OSX

  * testsuite/modules.50-cmds/095-uname.exp: testsuite: escape ';' in 'uname
  -v' res on OSX

  * configure: install: fix configure script for OSX  On Darwin, 'make' is a
  GNU make, GNU grep is called 'ggrep' and autopoint is installed in a
  gettext-specific bin directory.

  * doc/source/module.rst, modulecmd.tcl.in,
  testsuite/modules.00-init/100-pager.exp: Ignore PAGER env var for pager
  configuration  Do not consider anymore the PAGER environment variable for
  Modules pager configuration in order to avoid side effects coming from a
  general pager configuration not compatible with Modules pager handling.
  This change makes Modules pager implementation moving away from Git pager
  implementation (which was taken as reference to model configuration behavior
  of Modules pager). Git is able to withstand any pager configuration,
  especially to quit pager if content fits in one screen. Not the case with
  our implementation currently, so it is safer to only take into account pager
  configuration that is specific to Modules.  Adapt doc and tests accordingly.
  Fixes #146

2018-02-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Start pager only if some text has to be printed  Start
  pager if enabled at first message to print on stderr. No pager is started
  anymore when nothing need to be outputted on stderr.  To achieve that pager
  setup is split on a configuration and enablement initialization (initPager
  procedure) and startup (startPager procedure). Split in two procedures is
  required to report debug messages on pager configuration that will be
  printed through the started pager.  Partially fix #146.

  * modulecmd.tcl.in: Split report procedures in pre and post init err report
  Define 2 procedures for reportDebug, reportErrorAndExit and report. First to
  use before error report being initialized, to bufferize messages. The second
  one to be used to effectively report messages once error report being
  initialized.  initErrorReport procedure handles the procedure switch by use
  of 'rename' Tcl command.  g_init_errreport variable is removed as the
  procedure split make it useless.  No performance change is observed.

2018-02-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp: Use specific modshare var
  name for DYLD-specific vars  Name modshare variable for DYLD-specific
  variables MODULES_MODSHARE_<var> rather <var>_modshare to avoid warning
  messages due to DYLD detecting unknown variables when using _modshare
  suffix.  A getModshareVarName procedure has been created to determine the
  variable name to use for reference counter variables. Maybe all modshare
  variables will move to a MODULES_MODSHARE prefix fashion in the future.
  Fixes #153

  * modulecmd.tcl.in, testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/045-listlong.exp: Harden list cmd against
  unexistent mod  Check loaded module is found before outputing stats on it.

  * modulecmd.tcl.in, testsuite/modulefiles/info/isused,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/100-path.exp,
  testsuite/modules.70-maint/110-paths.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.90-avail/070-full.exp: Clean MODULEPATH content before
  using it  Improve getModulePathList procedure to pass each directory element
  part of the MODULEPATH env variable through getAbsolutePath. Ensure this way
  each directory has correct form to work with afterward.  A 'set_abs'
  argument is added to getModulePathList procedure, enabled by default, to
  apply this new cleanup behavior. Not applied for cmdModuleUse and
  cmdModuleUnuse who will need extra work to detect relative/full paths
  already set in MODULEPATH.  Add bunch of tests to check the various commands
  when modulepath directory has trailing slash at its end.  Fixes #152

2018-02-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/csh.in: init: no call to manpath if MANPATH defined on csh

  * INSTALL.rst: doc: clarify use of 'gmake' to install on non-Linux

  * init/csh.in: init: correct switchml def for Solaris pure csh

2018-02-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/040-subshell.exp,
  testsuite/install.00-init/050-crossshell.exp: testsuite: fix sh sub/cross
  shell tests on Solaris

2018-02-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/csh.in, testsuite/bin/install_test_csh: init/testsuite: need quotes
  for eval arg on pure csh

2018-02-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_csh, testsuite/bin/install_test_fish,
  testsuite/bin/install_test_sh, testsuite/install.00-init/005-init_ts.exp:
  testsuite: detect ksh93 if ksh not found  Useful on FreeBSD where ksh is not
  there only ksh93 binary.

2018-02-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_csh: testsuite: use pure csh syntax in
  install_test_csh

  * testsuite/install.00-init/010-environ.exp: testsuite: setup basic locale
  for install tests

  * init/Makefile: install: portable newline echo in Makefile

  * Makefile, Makefile.inc.in, configure, init/Makefile: install: check rmdir
  '--ignore-fail-on-non-empty' exists

  * Makefile, Makefile.inc.in, configure: install: check for GNU grep on
  Solaris

  * testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/040-subshell.exp,
  testsuite/install.00-init/050-crossshell.exp: testsuite: fix sh sub/cross
  shell tests on FreeBSD

  * init/Makefile: install: fix multi modulepath build in init/modulerc

  * init/Makefile: install: define a portable \n to build init/modulerc

2018-01-31  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile.inc.in, configure, init/Makefile, init/bash.in, init/csh.in,
  init/fish.in, init/ksh.in, init/sh.in, init/zsh.in: install/init: use
  MANPATH if manpath cmd not there

  * Makefile, Makefile.inc.in, configure: install: save 'git worktree' avail
  for Makefile

  * configure: install: check for 'gmake' cmd on non-Linux systems

2018-01-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * configure, contrib/envml: Use 'env' to start 'bash' in shebang  Adapt
  configure and envml scripts to call bash interpreter through env utility, as
  bash is not installed under /bin on some systems like FreeBSD.  Would be a
  lot more better if 'configure' script were a /bin/sh script.

2018-01-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.90-avail/070-full.exp: Specific code to query tty col num
  on SunOS

  * testsuite/install.00-init/005-init_ts.exp: testsuite: use tclsh found at
  configuration time  For install testsuite, do not try to find tclsh, use
  location found at configure time.

  * configure: install: detect tclsh8.{4,5,6} if no tclsh found  Adapt
  configure script to be able to test multiple variant of a command name. Use
  that to detect if a version-specific of tclsh is available in case no
  generic 'tclsh' binary exists.

  * testsuite/modules.20-locate/043-virtual.exp: testsuite: no illegal dir op
  on FreeBSD

2018-01-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in, modulecmd.tcl.in,
  testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/030-options.exp,
  testsuite/install.00-init/050-crossshell.exp,
  testsuite/modules.70-maint/120-autoinit.exp: init: use default value on
  undef var in sh shells  To avoid unbound variables on bash '-eu' mode for
  instance, use a default value on undefined variable. Adapt SH init scripts
  and autoinit code.  Add 'bash -eu' to the list of tested shells on
  'testinstall' suite.  Fixes #151

2018-01-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: No local
  var used in sh shell autoinit code  Considering the diversity of ways local
  variables are handled through the sh-variants ('local' known everywhere
  except on ksh, 'typeset' known everywhere except on pure-sh, and on some
  systems the pure-sh is in fact a 'ksh'), no local variables are defined and
  these variables that should have been local are unset at the beginning and
  the end.  Fixes #147

  * init/Makefile: install: portable symlink copy with '-R -P'  Make symlink
  copy portable with 'cp -R -P' (to support SunOS)

  * configure: install: check automake/aclocal bef. compat configure

  * init/Makefile: install: 'cp --remove-destination' is not portable  Adapt
  'cp --remove-destination' into rm + cp commands as the --remove-destination
  is not understood everywhere (not known on SunOS for instance).

2018-01-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, Makefile.inc.in, configure, doc/Makefile, site.exp.in,
  testsuite/install.00-init/030-options.exp: install: give ability to install
  without doc built  If no sphinx-build found, warn user but still make it
  possible to build and install Modules (without the documentation).  Enables
  to install Modules from git repository for test purpose on systems where
  python-sphinx is not available in regular pakage repositories.

  * Makefile.inc.in, configure, init/Makefile, init/profile-compat.sh.in,
  init/profile.sh.in: install: get 'ps' and 'basename' loc in configure  Check
  paths in configure script to detect the location of the 'ps' and 'basename'
  commands. Then use this found location in profile.sh scripts.  First part of
  #147 is solved here.

2018-01-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Write once all elt list in terse mode

  * modulecmd.tcl.in, testsuite/modules.70-maint/070-display.exp: Make
  separator line fit small screen width

2018-01-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/Makefile: doc/Makefile: Use $(MAKE) variable for recursive cmds

2018-01-19  Felix Neumärker <xdch47@posteo.de>

  * Makefile: Makefile: Use $(MAKE) variable for recursive cmds

2018-01-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst, contrib/rpm/environment-modules.spec.in: Release of version
  4.1.0

  * MIGRATING.rst: doc: describe v4.1 in MIGRATING

2018-01-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/rpm/environment-modules.spec.in: rpm: add 'less' to build
  requirements  To pass configure step as 'less' is defined as default pager
  and build enables paging capabilities in module.

  * modulecmd.tcl.in, testsuite/modulefiles.deep/modvirt/.common,
  testsuite/modulefiles.deep/modvirt/.modulerc,
  testsuite/modulefiles.deep/modvirt/dir1/.modulerc,
  testsuite/modulefiles.path1/dvcross/.base,
  testsuite/modulefiles.path1/dvcross/.modulerc,
  testsuite/modulefiles.path2/dvcross/.base,
  testsuite/modulefiles.path2/dvcross/.modulerc,
  testsuite/modulefiles.path3/dvcross/.base,
  testsuite/modulefiles.path3/dvcross/.modulerc,
  testsuite/modules.20-locate/069-cross.exp,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/021-unload.exp,
  testsuite/modules.80-deep/022-switch.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/050-whatis.exp,
  testsuite/modules.80-deep/080-access.exp,
  testsuite/modules.80-deep/999-cleanup.exp: Correctly handle deep virtual
  modules  Fix getModules procedure to correctly handle virtual modules when
  the sub-directories they refer to does not exist on the filesystem. For
  instance 'modvirt/dir0/sub1/1.0' may be a virtual module defined with
  module-virtual modvirt/dir0/sub1/1.0 .common  in 'modvirt/.modulerc' where
  modvirt/dir0 and modvirt/dir0/sub1 do not correspond to existing directories
  on the filesystem.  Now getModules will define among its result virtual
  directory entries to make the deep virtual modules findable when, for
  instance searching a default version.  Add non-regression tests in 20-locate
  and 80-deep suites for the deep virtual module use-case.

2018-01-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.20-locate/043-virtual.exp: testsuite: less _modshare
  checks in 043-virtual  Simplify test code and protect it from Tcl array to
  list sorting issue.

  * NEWS.rst, doc/source/diff_v3_v4.rst, doc/source/modulefile.rst: doc: desc.
  module-virtual command

  * testsuite/modulefiles/loc_sym/exec3,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: check module-virtual cmd
  in display mode

  * doc/source/conf.py, modulecmd.tcl.in: New year copyright mention update

  * modulecmd.tcl.in, testsuite/modulefiles/loc_virt2/.modulerc,
  testsuite/modulefiles/loc_virt2/2.0,
  testsuite/modules.20-locate/043-virtual.exp,
  testsuite/modules.90-avail/070-full.exp: Virtual module target may be loaded
  as is  Adapt similar loaded module detection code and add tests to check
  behavior when the target of a virtual module is loaded as is and a virtual
  module targeting it is loaded/unloaded/switched/etc.  Also set test cases on
  module mixing regular and virtual versions, playing with short or full path
  name representation.

  * modulecmd.tcl.in, testsuite/modules.20-locate/043-virtual.exp,
  testsuite/modules.50-cmds/170-swap.exp: Update g_loadedModuleFiles arrays in
  load/unload cmds  Update the content of the g_loadedModuleFiles cache array
  right after loading or unloading a module. Helps subsequent actions to learn
  the exact current state, especially in case of single command implying
  multiple actions (switch or load/unload of multiple modules)

2018-01-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.20-locate/043-virtual.exp: Handle
  _LMFILES_ path var in duplicates mode  Multiple loaded virtual modules may
  target same file so handling of the _LMFILES_ path variable is changed to a
  'duplicates' mode to ensure a file entry will always correspond to a module
  entry in LOADEDMODULES.  Adapt entry removal in _LMFILES_ variable to delete
  the entry at the index corresponding to the index of the entry removed in
  LOADEDMODULES.  Add new test cases to check this duplicate mode entries in
  all situation where _LMFILES_ content is involved.

2018-01-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/loc_virt1/.common,
  testsuite/modulefiles/loc_virt1/.modulerc,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.20-locate/043-virtual.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.90-avail/070-full.exp, testsuite/virttargets/loc_virt:
  testsuite: add module-virtual cmd tests

2018-01-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/etc/rc, testsuite/modulefiles.path1/vcross/.base,
  testsuite/modulefiles.path1/vcross/.modulerc,
  testsuite/modulefiles.path2/vcross/.base,
  testsuite/modulefiles.path2/vcross/.modulerc,
  testsuite/modulefiles.path3/vcross/.base,
  testsuite/modulefiles.path3/vcross/.modulerc,
  testsuite/modulefiles/dirmodvirt/.modulerc,
  testsuite/modulefiles/dirmodvirt/1.0,
  testsuite/modulefiles/loc_dvv1/.common,
  testsuite/modulefiles/loc_dvv1/.modulerc,
  testsuite/modulefiles/loc_dvv1/.version,
  testsuite/modulefiles/loc_rcv1/.base,
  testsuite/modulefiles/loc_rcv1/.common,
  testsuite/modulefiles/loc_rcv1/.modulerc,
  testsuite/modulefiles/loc_rcv2/.common,
  testsuite/modulefiles/loc_rcv2/.modulerc,
  testsuite/modulefiles/loc_sym/.common, testsuite/modulefiles/loc_sym/alias8,
  testsuite/modulefiles/loc_sym/alias9,
  testsuite/modulefiles/loc_sym/getvers10,
  testsuite/modulefiles/loc_sym/getvers9,
  testsuite/modulefiles/loc_sym/version24,
  testsuite/modulefiles/loc_sym/version25,
  testsuite/modulefiles/loc_sym/version26,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/069-cross.exp,
  testsuite/modules.20-locate/080-access.exp, testsuite/virttargets/loc_rcv:
  testsuite: add virtual modules location tests

2018-01-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Cache modulefile validity check result  Add in
  checkValidModule procedure a 'g_modfileValid' global array to save validity
  check result of a modulefile at first query, then reuse this cached result
  on subsequent queries on same modulefile.

  * modulecmd.tcl.in: Cache file mtime query results  Add 'getFileMtime' to
  query file modification time. On first call, cache the result then use cache
  on subsequent calls for the same file.

  * modulecmd.tcl.in: Find modulepath of virtual module on 'search' cmd  Add
  'findModulepathFromModulefile' procedure to get the modulepath corresponding
  to a passed modulefile (or modulerc).  Adapt 'search' cmd when looking at
  module alias target, to correctly handle virtual modules. Modulepath
  directory is retrieved, when detecting a virtual module, from the modulerc
  file that has defined this virtual module.

  * modulecmd.tcl.in: Handle loaded virtual modules on 'list' cmd  Introduce
  'isModuleVirtual' procedure to detect a module is virtual based on its name
  and modulefile. A module is stated virtual if its name cannot be found at
  end of its modulefile name.  When looking at loaded modules during a 'list'
  command, treat specifically virtual modules, almost like full path modules.
  Tags on loaded virtual module are not search as once loaded we do not know
  anymore from what modulepath directory the virtual module was coming from.

2018-01-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles/source/1.1,
  testsuite/modulefiles/source/1.2, testsuite/modules.50-cmds/330-source.exp,
  testsuite/modules.90-avail/070-full.exp: Treat file relative to cwd in
  source/unsource  So a relative file to source from a modulefile or modulerc,
  is relative starting from the directory of the modulefile/modulerc sourcing
  it.  Add a specific case to treat empty file name by the way.

  * modulecmd.tcl.in, testsuite/modules.10-use/030-use.exp,
  testsuite/modules.50-cmds/015-use.exp: Specific err on cmdModuleUse when
  empty dir name

  * modulecmd.tcl.in, testsuite/modulefiles/conflict/relpath,
  testsuite/modulefiles/info/isused, testsuite/modulefiles/module/relpath,
  testsuite/modulefiles/prereq/relpath, testsuite/modulefiles/use/4.1,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/122-prereq-fullpath.exp,
  .../modules.50-cmds/132-conflict-fullpath.exp,
  testsuite/modules.50-cmds/150-module.exp: Cwd during interp corresponds to
  modfile dir  Now getAbsolutePath procedure, which make a path passed as
  argument an absolute path, check the current path of the interpreted
  modulefile or modulerc rather always taking the current path of the module
  command execution.  So a modulefile or modulerc can use relative paths based
  on a determistic way as it is now based on their location. Previously it was
  not possible as relative paths were dependent of the location from where the
  module command was executed.  If ModulesCurrentModulefile variable is not
  empty, getAbsolutePath nows it is called during a modulefile/modulerc
  interpretation, so it takes the directory name of this
  ModulesCurrentModulefile as current working directory.

  * modulecmd.tcl.in, testsuite/modulefiles/modvar/modfile,
  testsuite/modulefiles/modvar/submodfile,
  testsuite/modules.50-cmds/340-modvar.exp,
  testsuite/modules.90-avail/070-full.exp: Handle ModulesCurrentModulefile in
  a push/pop fashion  Refactor handling of the ModulesCurrentModulefile public
  global variable to get same treatment like ModuleName with a push/pop
  mechanism.  Then call to the new pushModuleFile and popModuleFile procedures
  is gathered in the execute-modulefile and execute-modulerc procedures to
  push filename before interpretation and popping it when interpretation is
  done.  Change is that ModulesCurrentModulefile is reset after
  interpretation, so when this variable is queried in a master interpretation
  context it is possible to know if some file is currently being interpreted
  or not (value restored to the empty string).

2018-01-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Introduce 'module-virtual' modulefile command  Introduce
  the virtual module concept with the 'module-virtual' modulefile command.
  This new command takes a module name as first argument and a modulefile
  location as second argument.  A virtual module stands for this module name
  associated to a modulefile. The modulefile is the script interpreted when
  loading or unloading the virtual module which appears or can be found with
  its virtual name.  Like a module aliases, virtual modules are expected to be
  defined within modulerc files (at whatever rc level). Virtual modules can be
  targeted by aliases or symbolic versions. They also compete with aliases and
  regular modules for the implicit default version of a module.  Multiple
  virtual modules may target the same modulefile, which can distinguish
  between these various virtual names by use of the "[module-info name]"
  command.  A virtual module cannot be loaded using a full path name (merge of
  its module path and its module name) as this file does not exist.  Based on
  a proof of concept made by Bert Wesarg [1].  [1]
  https://github.com/bertwesarg/modules-tcl/commit/545e9f

2018-01-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst, modulecmd.tcl.in, testsuite/modulefiles/spread/1.0,
  testsuite/modulefiles/spread/2.0, testsuite/modulefiles/spread/3.0,
  testsuite/modulefiles/spread/4.0, testsuite/modulefiles/spread/5.0,
  testsuite/modulefiles/spread/6.0, testsuite/modulefiles/spread/7.0,
  testsuite/modulefiles/spread/8.0,
  testsuite/modulefiles/spreadrc/dir1/.modulerc,
  testsuite/modulefiles/spreadrc/dir1/1.0,
  testsuite/modulefiles/spreadrc/dir2/.modulerc,
  testsuite/modulefiles/spreadrc/dir2/1.0,
  testsuite/modulefiles/spreadrc/dir3/.modulerc,
  testsuite/modulefiles/spreadrc/dir3/1.0,
  testsuite/modulefiles/spreadrc/dir4/.modulerc,
  testsuite/modulefiles/spreadrc/dir4/1.0,
  testsuite/modulefiles/spreadrc/dir5/.modulerc,
  testsuite/modulefiles/spreadrc/dir5/1.0,
  testsuite/modulefiles/spreadrc/dir6/.modulerc,
  testsuite/modulefiles/spreadrc/dir6/1.0,
  testsuite/modulefiles/spreadrc/dir7/.modulerc,
  testsuite/modulefiles/spreadrc/dir7/1.0,
  testsuite/modulefiles/spreadrc/dir8/.modulerc,
  testsuite/modulefiles/spreadrc/dir8/1.0: Correctly handle list var when
  reset interp  When restoring an initial interpreter variable which was a
  list, issue occured as the 'slave eval set' was given more than one value
  argument. Passing values enclosed in a 'list' fixes the issue.  Improve
  non-regression tests to ensure expected handling will persist over times.
  Closes #145

2018-01-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/030-options.exp: testsuite: check modulecmd on
  compat only if inst.

  * NEWS.rst, doc/source/diff_v3_v4.rst, doc/source/module.rst: doc: desc
  MODULES_CMD var and modulecmd wrapper

  * testsuite/install.00-init/030-options.exp: testsuite: check modulecmd in
  install suite

  * .gitignore, Makefile, contrib/rpm/environment-modules.spec.in,
  contrib/scripts/modulecmd.in: install: introduce modulecmd wrapper script
  Which execute the module command bin corresponding to active flavor.

2018-01-03  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash.in, init/cmake.in, init/csh.in, init/ksh.in, init/perl.pm.in,
  init/python.py.in, init/ruby.rb.in, init/sh.in, init/zsh.in,
  modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Expose
  current modulecmd with MODULES_CMD env var

2018-01-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst, init/cmake.in, modulecmd.tcl.in,
  testsuite/modules.70-maint/120-autoinit.exp: Fix removal of tmp
  moduleinit.cmake.XXXXXXXXXXXX

  * NEWS.rst: doc: dsc versioning, Tcl {} and .modspath parse in NEWS

  * testsuite/modules.00-init/100-pager.exp: testsuite: esc install path for
  pager regexp tests

2017-12-31  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/modulefiles/version.in: install: reinit module code in version
  modfile  Adapt version modulefile, which is deployed in versioning
  installation mode, to re-initialize module command during its unload, to
  restore the command of the previously loaded version.  Goes through a full
  re-initialization to overcome incompatible definition of the module command
  between version 3 and 4.  This full re-initialization cannot be attempted on
  scripting shells, like Perl or Python, as function re-definition is not a
  common practice on these languages.

2017-12-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_v3_v4.rst: doc: update diff_v3_v4 with 4.1 changes so far

  * NEWS.rst, doc/source/module.rst: doc: desc. variable ref support in
  MODULEPATH

  * testsuite/install.00-init/060-quar.exp,
  testsuite/modules.50-cmds/122-prereq-fullpath.exp,
  testsuite/modules.50-cmds/132-conflict-fullpath.exp,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.50-cmds/330-source.exp: testsuite: fix regexp-tests not
  escaping modfile paths

  * site.exp.in, testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/030-options.exp: testsuite: check
  versioning-specific modfile install

  * testsuite/bin/install_test_cmake: testsuite: support 3-arg cmd on cmake
  test script

2017-12-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, Makefile.inc.in, configure, init/Makefile, site.exp.in: install:
  add @VERSION@ pattern  Introduce the '@VERSION@' pattern, combination of
  Modules release and build information, for building files to install.  Still
  rely on @MODULES_RELEASE@ and @MODULES_BUILD@ when these information are
  needed prior to ./configure call (dist-related stuff) or are expected to
  change after ./configure call (modulecmd.tcl in dev environment).

  * .travis.yml: travis: enable versioning install on some test cases

  * Makefile, testsuite/example/.modulespath.in,
  testsuite/example/modulerc.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: testsuite/travis: adapt modpath
  in ex cfg if versioning  Adapt defined modulepaths in example testsuite
  configuration file (modulerc and .modulespath) depending if versioning
  installation mode is enabled or not.

2017-12-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml, Makefile, testsuite/example/.modulespath-empty:
  testsuite/travis: add an empty .modulespath example  Check behavior when
  .modulespath exists but does not hold any path to add to MODULEPATH.

  * modulecmd.tcl.in: Correct parsing of init/.modulespath lines w/o comment

  * modulecmd.tcl.in: Fix MODULEPATH init when init/.modulespath empty

  * init/ksh.in: init: change 'string contains' tests for ksh  Adapt the
  'string contains' tests in ksh init script (used to setup FPATH, PATH and
  MANPATH without duplicates) to correctly handle paths containing '+'
  character, which is detected as a pattern-specific character on the '=~'
  test condition previously used.

  * INSTALL.rst, configure, init/Makefile, site.exp.in,
  testsuite/install.00-init/030-options.exp: install: adapt default modpath if
  versioning set  If --enable-versioning configure option is set, default
  modulepath option is changed  from '$prefix/modulefiles' to
  '$baseprefix/$MODULE_VERSION/modulefiles'.  Adapt installation process to
  handle modulepath containing special '$' character. Adapt also install
  testsuite to correctly check these modulepaths containing variable
  references.

2017-12-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp: Set env var on
  Tcl with val enclosed in {}  Produce environment variable set code for Tcl
  shell with value enclosed in curly braces {} rather double-quote "". Curly
  braces are more effective to protect value from interpretation, like if it
  contains a dollar character.

2017-12-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, INSTALL.rst, Makefile, Makefile.inc.in, configure,
  contrib/modulefiles/modules.in, contrib/modulefiles/version.in,
  init/Makefile, modulecmd.tcl.in, site.exp.in,
  testsuite/install.00-init/010-environ.exp,
  testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.70-maint/120-autoinit.exp: install: deploy MODULE_VERSION
  and version modfile  When --enable-versioning is set at configure time,
  deploy the setup of the MODULE_VERSION and MODULE_VERSION_STACK environment
  variables in modulecmd.tcl and in a version-specific modulefile.  This
  version-specific modulefile is deployed in a @baseprefix@/versions
  modulepath directory, which is also created specifically for versioning
  installation mode.  MODULE_VERSION and MODULE_VERSION_STACK environment
  variables setup in modulecmd.tcl is commented if versioning installation
  mode is not enabled rather deleted to guaranty consistency across code
  coverage tests (same code line numbering whatever the installation options
  set).  version-specific modulefile is a bit different than the one used
  before <4.0 as now module version is initialized when loading this module by
  calling the autoinit action on the modulecmd.tcl script.  These
  version-specific modulefiles enable to switch from one module version to
  another but there is an incompatibility of initialization between Modules
  3.2 and Modules >=4. Switching from Modules 3.2 to Modules >4 will be
  possible, but not going back from >4 to version 3.2.

2017-12-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.95-version/040-xgetenv.exp: Solve env
  var reference in MODULEPATH  Restore the ability of C-version to resolve
  environment variable reference put in MODULEPATH elements. Path element is
  registered in MODULEPATH variable with its variable references. When path
  entry is used, variable references are solved to get real path.  Add a
  'resolvStringWithEnv' procedure to handle resolution of environment variable
  references set in string.  Re-enable non-regression tests of 95-version
  suite.

2017-12-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * INSTALL.rst, configure: install: add --enable-versioning  Add
  '--enable-versioning' configure option to append Modules version to the
  chosen installation prefix.

  * init/Makefile: testsuite/travis: fix testconfig removal of etcdir

2017-12-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst: doc: desc. siteconfig.tcl in NEWS

  * .travis.yml, Makefile, init/Makefile, testsuite/example/siteconfig.tcl:
  testsuite/travis: add an example siteconfig.tcl  Add
  'install-testsiteconfig' make target to setup a dummy siteconfig.tcl file in
  install_etcdir. Link that to some of the travis checks to run testsuite with
  an existing siteconfig.tcl

  * modulecmd.tcl.in, testsuite/modules.00-init/100-pager.exp: Transparently
  bufferize err report before pager init  Define a global g_init_errreport
  flag to know within report or reportErrorAndExit procedure if error
  reporting has been initialized or not. If not yet initialized, call to
  output message is saved in a buffer list.  A 'initErrorReport' procedure is
  added to switch 'g_init_errreport' flag and output every messages saved in
  buffer list.  With this change, it is possible to use reportDebug,
  reportWarning, reportErrorAndExit, etc procedures transparently without
  having to know if error reporting has been enabled or not. The report
  procedures can then be used in siteconfig.tcl extension without messing
  paging output.  Regarding reportDebug, g_init_errreport enables to know if
  call has to be saved since if error report is not initialized, debug mode
  status is not yet known.

2017-12-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * INSTALL.rst, Makefile, Makefile.inc.in, configure, doc/Makefile,
  doc/source/conf.py, doc/source/module.rst, init/Makefile, modulecmd.tcl.in,
  site.exp.in: Introduce @etcdir@/siteconfig.tcl script  Add the possibility
  to setup a site-specific configuration Tcl script which will be sourced at
  the start of modulecmd.tcl. This site-specific Tcl script enables to
  supersede global variable and procedure definition made in modulecmd.tcl.
  This way local adaptations can be made without editing the modulecmd.tcl
  script.  '--etcdir' configure option is added to specify the location of the
  site-specific configuration script.

  * NEWS.rst: doc: desc work on *-path commands in NEWS

2017-12-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Improve getReferenceCountArray proc debug message

  * modulecmd.tcl.in, testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.70-maint/152-remove-path.exp: Always set/unset var when
  removing path in it  Even if no change on variable value, always set (or
  unset) this variable as its relative counter reference variable is always
  set (or unset).

2017-12-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst, doc/source/modulefile.rst, init/bash_completion.in,
  init/tcsh_completion.in, init/zsh-functions/_module, modulecmd.tcl.in,
  testsuite/modulefiles/append/4.1, testsuite/modulefiles/remove/4.0,
  testsuite/modulefiles/remove/4.1, testsuite/modulefiles/remove/4.2,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp,
  testsuite/modules.90-avail/070-full.exp: Add --index opt to remove-path
  Remove path entry in environment variable by passing an index rather a
  string. String at specified index in content list is removed if coherent
  with relative reference counter.

2017-12-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst, doc/source/modulefile.rst, init/bash_completion.in,
  init/tcsh_completion.in, init/zsh-functions/_module, modulecmd.tcl.in,
  testsuite/modulefiles/append/4.0, testsuite/modulefiles/remove/3.0,
  testsuite/modulefiles/remove/3.1, testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp,
  testsuite/modules.90-avail/070-full.exp: Introduce --duplicates opt to
  {append,prepend}-path  Let the possibility to append or prepend path element
  entry to a variable even if this entry is already registered into the
  variable which introduces duplicates element within the variable value.
  Entries are added with eventual duplication by the use of the --duplicate
  option on append-path and prepend-path commands. These additions increment
  the reference counter as usual.  Removal of duplicated path entry depends on
  the reference counter value. Entries are not removed unless reference
  counter value is lesser than the number of duplicated entries.

2017-12-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst, doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modulefiles/append/1.7, testsuite/modulefiles/append/2.4,
  testsuite/modulefiles/prepend/1.9, testsuite/modulefiles/prepend/2.4,
  testsuite/modulefiles/remove/1.7, testsuite/modulefiles/remove/2.4,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp,
  testsuite/modules.90-avail/070-full.exp: Pass multi paths in multi strs on
  {append,prepend,remove}-path  Enable append-path, prepend-path and
  remove-path to receive multiple path value arguments.  Add some
  non-regression tests for modulefile or sub-command cases.  Update
  modulefile.4 and module.1 docs.  Closes #141

  * doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modulefiles/append/1.6, testsuite/modulefiles/append/2.3,
  testsuite/modulefiles/prepend/1.8, testsuite/modulefiles/prepend/2.3,
  testsuite/modulefiles/remove/1.6, testsuite/modulefiles/remove/2.3,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp,
  testsuite/modules.90-avail/070-full.exp: Pass multiple paths in 1 str on
  {append,prepend,remove}-path  Detect if path string passed to append-path,
  prepend-path or remove-path commands is composed of multiple path entries
  (separated by specified or default delimiter string). In this situation
  add/remove each path separately to correctly update relative reference
  counter.  Add some non-regression tests for modulefile or sub-command cases.
  Update modulefile.4 doc.  Closes #142

2017-12-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Simplify check of add-path pos arg (prepend/append)  If
  not 'prepend' then it is 'append', no third choice.

  * modulecmd.tcl.in: Rely on add-path rather append-path internally  Do not
  use append-path, prepend-path, remove-path in internal procedures not to
  depend on current mode (load or unload).

  * modulecmd.tcl.in: Improve readability of cmdModuleUse proc

  * modulecmd.tcl.in, testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp: Move path cmd arg parse in
  {add,unload}-path  Move path commands (append-path, prepend-path and
  remove-path) argument check and parse in internal unload-path and add-path
  procedures. So it can benefit for both external and internal calls and
  gather all checks in parsePathCommandArgs.  Update all 'unload-path' and
  'add-path' calls for new argument order. In addition it is not needed
  anymore to pass a separator character to these 2 procedures as it set to the
  default value through parsePathCommandArgs.  Adapt non-regression tests.

  * modulecmd.tcl.in, testsuite/modules.50-cmds/050-prepend.exp: Distinguish
  cleared var from bare empty path entry  Sometimes a variable is cleared by
  defining it empty instead of unsetting it. This is perticulary the case with
  LOADEDMODULES which is often set empty in init script to say nothing loaded.
  So this situation need to be distinguished from a path variable set to an
  empty path entry.  To distinguish both situations, relative reference
  counter variable is used to check if an empty path entry is registered.

  * modulecmd.tcl.in, testsuite/modulefiles/prepend/3.0,
  testsuite/modulefiles/prepend/3.1,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.90-avail/070-full.exp: Fix reference counter handling of
  empty path entry

2017-12-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles/prepend/1.1,
  testsuite/modulefiles/prepend/1.6, testsuite/modulefiles/prepend/1.7,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp,
  testsuite/modules.90-avail/070-full.exp: Add support for --delim=C arg
  syntax on *-path cmds  Closes #140

  * modulecmd.tcl.in, testsuite/modulefiles/append/0.5,
  testsuite/modulefiles/append/1.5, testsuite/modulefiles/prepend/0.5,
  testsuite/modulefiles/prepend/1.5, testsuite/modulefiles/remove/0.5,
  testsuite/modulefiles/remove/1.5, testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp,
  testsuite/modules.90-avail/070-full.exp: Check env var name not empty for
  *-path commands

  * modulecmd.tcl.in: Catch/report error in cmdModuleResurface and return
  false

2017-12-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles/append/0.3,
  testsuite/modulefiles/append/0.4, testsuite/modulefiles/append/1.3,
  testsuite/modulefiles/append/1.4, testsuite/modulefiles/prepend/0.3,
  testsuite/modulefiles/prepend/0.4, testsuite/modulefiles/prepend/1.3,
  testsuite/modulefiles/prepend/1.4, testsuite/modulefiles/remove/0.3,
  testsuite/modulefiles/remove/0.4, testsuite/modulefiles/remove/1.3,
  testsuite/modulefiles/remove/1.4, testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp,
  testsuite/modules.90-avail/070-full.exp: Improve
  {append,prepend,remove}-path arg check  Detect missing environment variable
  name or value when calling append-path, prepend-path or remove-path
  procedures. Raise error in this situation.  Introduce a
  'parsePathCommandArgs' to check args for the 3 *-path commands.  Add
  non-regression tests in 050-cmds and 070-maint suites to check bad argument
  situations.  Closes #139

  * testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/070-command.exp,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.70-maint/020-update.exp: testsuite: set type help message
  as global var

2017-12-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst: doc: desc coll. pinning and @prefix@/etc/rc in NEWS

  * .travis.yml, Makefile, init/Makefile, modulecmd.tcl.in,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/065-rcerrs.exp,
  testsuite/modules.20-locate/081-access-rc.exp: @prefix@/etc/rc does not
  depend on MODULESHOME anymore  Avoid dependency to the MODULESHOME
  environment variable when looking for the etc/rc global RC file. To define
  an environment dynamic global RC file the MODULERCFILE variable may be used.
  By not relying on an environment variable we ensure this etc/rc will always
  be read, if it exists, whatever the current environment state.  Location of
  this etc/rc is based on @prefix@ defined at configure time which is also the
  basis for the MODULESHOME value, so this change should not have an impact if
  MODULESHOME variable were not manipulated afterward.  This change is useful
  when using module through commands resetting the environment like 'sudo'
  (see RH#1443124, RH#1139165 [1])  module.1 man page is already mentionning
  @prefix@/etc/rc, no change needed there.  Adapt testsuite to provide a way
  to test the use of a @prefix@/etc/rc file for the whole 'make test'
  duration, with 'make install-testetcrc'.  [1]
  https://bugzilla.redhat.com/show_bug.cgi?id=1139165

2017-12-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/home/.module/default, testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/999-cleanup.exp: testsuite: check
  MODULES_COLLECTION_PIN_VERSION

2017-12-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst, modulecmd.tcl.in: Introduce
  MODULES_COLLECTION_PIN_VERSION  Add the ability to always record module name
  + version even if this version corresponds to the default one.  By default,
  version number is omitted if it corresponds to the implicit or explicitly
  set default version. If MODULES_COLLECTION_PIN_VERSION environment variable
  is set to 1, version number is always recorded.  When restoring a
  collection, we do not know for sure if it was saved with pinned versions or
  not, so module load and unload movements are determined on both simplified
  or raw module list. Results with less module to load or unload (means with
  more matches between module lists) are kept.  Acknowledgment: this
  development has been made and funded within the framework of the PRACE Fifth
  Implementation Phase (PRACE-5IP) project (http://www.prace-ri.eu/).
  PRACE-5IP receives funding from the EU's Horizon 2020 research and
  innovation programme (2014-2020) under grant agreement no. 730913.  Closes
  #89

2017-12-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * configure: install: change git repo clone detection threshold  Relative to
  travis git clone depth increase

  * .travis.yml: travis: increase git clone depth to catch last tag

  * NEWS.rst: doc: desc work on full path name modfile in NEWS

  * testsuite/modules.50-cmds/310-puts.exp: testsuite: fix puts 3-arg bad case
  test for Tcl<8.6

  * testsuite/modulefiles/puts/7, testsuite/modules.50-cmds/310-puts.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: add 3-arg bad case test
  for putsModfileCmd

2017-12-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Full to short name cmp in getLoadedWithClosestName

  * testsuite/modules.50-cmds/170-swap.exp: testsuite: one name swap with full
  path modfile

2017-12-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/conflict/fullpath,
  .../modules.50-cmds/132-conflict-fullpath.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: test conflict will full
  path modulefile

  * NEWS.rst: doc: desc unload mode 'module source' in NEWS

  * testsuite/modulefiles/prereq/fullpath,
  testsuite/modules.50-cmds/122-prereq-fullpath.exp: testsuite: test prereq
  will full path modulefile

2017-12-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.70-maint/153-is-loaded.exp,
  testsuite/modules.80-deep/021-unload.exp: Correlate mod to already loaded
  full path mod  Check if a passed modulefile correspond to an already loaded
  full path module (passed as full path name when it was loaded) thank to set
  modulepath. This is done to detect this modulefile is-loaded, should not be
  loaded a second time (with a different name) or should be unloaded.  Add a
  'findModuleNameFromModulefile' procedure to get corresponding modulefile
  name from a full path name based on currently enabled modulepaths.  Adapt
  'getLoadedWithClosestName' and 'getLoadedMatchingName' procedures to make
  use of 'findModuleNameFromModulefile' when a loaded module is detected to be
  full path.  Make cmdModuleLoad use 'getLoadedMatchingName' after
  'getPathToModule' to check whether returned module is already loaded or not
  (checking short or full path name combinations)  Add tests on load, unload,
  swap and is-loaded actions.

  * doc/source/module.rst: doc: fix info-loaded section layout in module.1

2017-12-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.70-maint/153-is-loaded.exp: Correlate full path mod to
  already loaded mod  Check if a passed full path modulefile correspond to an
  already loaded module (passed as short name when it was loaded). To detect
  this full path modulefile is-loaded, should not be loaded a second time
  (with a different name), should be unloaded.  Add tests on load, unload,
  swap and is-loaded actions.

2017-12-03  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp: testsuite: new tests to check full
  path mod support

  * modulecmd.tcl.in, testsuite/modules.00-init/050-modpath.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp: Modulefile starting with '(.|..)/'
  are full path  Consider modulefile passed with name starting by './' or
  '../' a full path name modulefile, like those starting by '/'.  Convert them
  to an absolute path after detection to always register full path modulefiles
  with their absolute path name.  Adapt existing full path load and unload
  tests.  Complements #132

  * testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.20-locate/075-symlink.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.50-cmds/170-swap.exp: testsuite: def 'err_file' for 'no
  such file...' msg

2017-12-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: putsModfileCmd call 'report' to send stderr content  To
  better handle content sent to stderr, which should sometimes go through a
  pager process, pass it to the 'report' procedure rather calling the real
  'puts' command in putsModfileCmd procedure (which acts as the puts command
  in a modulefile context)

  * testsuite/bin/install_test_tcl: testsuite: fix install_test_tcl for Tcl8.5
  compat

  * testsuite/modulefiles/source/0.9, testsuite/modulefiles/source/1.0,
  testsuite/modules.50-cmds/330-source.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: check 'module source'
  when called from modfile

  * modulecmd.tcl.in: Ensure false is rendered only once  If a false statement
  has already been rendered, do not render it again even if renderFalse
  procedure is called a second time.  Useful in case within a modulefile
  interpretation a command ends up with a reportErrorAndExit statement, then
  renderSettings is called.

  * modulecmd.tcl.in: Handle 'source' command in unload and display mode
  Report command call in display mode and change source in unsource on unload
  mode. Also reverse order of script to interpret on unload.  Closes #137

2017-12-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/050-modpath.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/069-cross.exp,
  testsuite/modules.50-cmds/010-init_ts.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/028-setenv-refcount.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  .../modules.50-cmds/038-unsetenv-refcount.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/078-refresh.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/081-info-user.exp,
  testsuite/modules.50-cmds/082-info-user-exp.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/089-info-type.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/100-loglevel.exp,
  testsuite/modules.50-cmds/101-badfac.exp,
  testsuite/modules.50-cmds/105-trace.exp,
  testsuite/modules.50-cmds/110-verbose.exp,
  testsuite/modules.50-cmds/115-verbose-msg.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/172-swap-app-delim.exp,
  testsuite/modules.50-cmds/173-swap-app-delim.exp,
  testsuite/modules.50-cmds/175-swap2.exp,
  testsuite/modules.50-cmds/177-swap-prep-delim.exp,
  testsuite/modules.50-cmds/178-swap-prep-delim.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/195-load-recurs.exp,
  testsuite/modules.50-cmds/197-load-lots.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/240-chdir.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.70-maint/100-path.exp,
  testsuite/modules.70-maint/110-paths.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/021-unload.exp,
  testsuite/modules.91-sort/010-init_ts.exp,
  testsuite/modules.95-version/010-init_ts.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp,
  testsuite/modules.95-version/999-cleanup.exp: testsuite: use 'modpath'
  rather 'env(MODULEPATH)'

  * NEWS.rst: doc: desc path/info-loaded/no-arg-case in NEW

  * doc/source/module.rst, doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/321-is-used.exp,
  testsuite/modules.70-maint/155-is-used.exp: Handle no argument case on
  'is-used'  Returns true when no argument is passed to 'is-used' if any
  directory is used, whatever it is.  Adapt docs and test cases to this new
  behavior.  Acknowledgment: this development has been made and funded within
  the framework of the PRACE Fifth Implementation Phase (PRACE-5IP) project
  (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's Horizon
  2020 research and innovation programme (2014-2020) under grant agreement no.
  730913.  Closes #144

  * doc/source/module.rst, doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/320-is-saved.exp,
  testsuite/modules.70-maint/154-is-saved.exp: Handle no argument case on
  'is-saved'  Returns true when no argument is passed to 'is-saved' if any
  collection matching currently set collection target exists whatever this
  collection is.  Adapt docs and test cases to this new behavior.
  Acknowledgment: this development has been made and funded within the
  framework of the PRACE Fifth Implementation Phase (PRACE-5IP) project
  (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's Horizon
  2020 research and innovation programme (2014-2020) under grant agreement no.
  730913.

  * modulecmd.tcl.in: Extract findCollections proc from cmdModuleSavelist  Add
  an independent procedure to find all collections saved corresponding to
  enabled collection target.

  * doc/source/module.rst, doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.70-maint/153-is-loaded.exp: Handle no argument case on
  'is-loaded'  Returns true when no argument is passed to 'is-loaded' if any
  modulefile is loaded, whatever it is.  Adapt docs and test cases to this new
  behavior.  Acknowledgment: this development has been made and funded within
  the framework of the PRACE Fifth Implementation Phase (PRACE-5IP) project
  (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's Horizon
  2020 research and innovation programme (2014-2020) under grant agreement no.
  730913.

  * testsuite/modules.70-maint/153-is-loaded.exp: testsuite: improve coverage
  for is-loaded sub-cmds

  * modulecmd.tcl.in: Fix 'is-loaded' to handle list of mods as arg  Align
  behavior on other is-* commands and man-page: return 1 if at least one arg
  matches, return 0 elsewhere.

  * modulecmd.tcl.in: Make 'is-loaded' relies on 'getLoadedMatchingName'  Add
  a 'returnfirst' return type to the getLoadedMatchingName procedure then make
  is-loaded use getLoadedMatchingName rather than redoing it.

  * testsuite/modulefiles/info/isloaded,
  testsuite/modules.50-cmds/088-info-isloaded.exp: testsuite: improve coverage
  of 'is-loaded' tests

2017-11-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_cmake, testsuite/bin/install_test_perl,
  testsuite/bin/install_test_python, testsuite/bin/install_test_r,
  testsuite/bin/install_test_ruby, testsuite/bin/install_test_tcl,
  testsuite/install.00-init/020-module.exp: testsuite: check info-loaded on
  install suite  Adapt install test scripts to output obtained result text.

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.20-locate/075-symlink.exp,
  testsuite/modules.70-maint/100-path.exp,
  testsuite/modules.70-maint/110-paths.exp: Returning text sub-cmds always
  returns text  In case of error, message is displayed on stderr but commands
  will still return text, an empty string. If no result are found, an empty
  string is also set as returning value.  Text is returned as result if
  'g_return_text' global variable is defined. It has the priority over
  error/false/true returns.  This way text can always be expected as the
  returned value of a module sub-command returning text in normal cases.
  Adapt non-regression test cases for 'path' and 'paths'.

  * doc/source/module.rst, init/bash_completion.in, init/fish_completion,
  init/tcsh_completion.in, init/zsh-functions/_module, modulecmd.tcl.in,
  testsuite/modulefiles/modbad/info-loaded,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.70-maint/157-info-loaded.exp,
  testsuite/modules.90-avail/070-full.exp: Introduce 'info-loaded' as module
  sub-command  Like for 'is-loaded', register 'module-info loaded' modulefile
  Tcl command as a module sub-command to make it reachable from the command
  line. Sub-command is named 'info-loaded' for sake of efficiency (not
  'module-info-loaded').  Add the new command to the existing shell completion
  scripts (bash, tcsh fish, zsh).  Document new command in the module.1 man
  page.  Check 'info-loaded' command argument error in 071-args tests of
  00-init suite. Test 'module info-loaded' cannot be called from a modulefile
  with 151-module-onlytop in 50-cmds suite. Add 156-info-loaded tests in
  70-maint suite to validate new sub-command.  Acknowledgment: this
  development has been made and funded within the framework of the PRACE Fifth
  Implementation Phase (PRACE-5IP) project (http://www.prace-ri.eu/).
  PRACE-5IP receives funding from the EU's Horizon 2020 research and
  innovation programme (2014-2020) under grant agreement no. 730913.  Closes
  #3

  * doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modulefiles/info/loaded,
  testsuite/modules.50-cmds/285-info-loaded.exp,
  testsuite/modules.90-avail/070-full.exp: Introduce 'module-info loaded'
  modulefile command  Add 'loaded' sub-command to the 'module-info' modulefile
  Tcl command. This new sub-command returns name of the modules currently
  loaded corresponding to the name passed as argument. May return multiple
  modules if passed name matches more than one loaded modules.  Document new
  command in modulefile.4 and test it with a 285-info-loaded tests in 50-cmds
  suite.  Acknowledgment: this development has been made and funded within the
  framework of the PRACE Fifth Implementation Phase (PRACE-5IP) project
  (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's Horizon
  2020 research and innovation programme (2014-2020) under grant agreement no.
  730913.

  * testsuite/modules.00-init/006-procs.exp: testsuite: remove shell_echo
  helper proc  Not used anymore as tests using shell_echo moved to shell_text.

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/038-defcontext.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.20-locate/069-cross.exp,
  testsuite/modules.20-locate/075-symlink.exp,
  testsuite/modules.70-maint/110-paths.exp,
  testsuite/modules.80-deep/068-transitive.exp: Paths sub-commands now returns
  text  Adapt 'paths' module sub-commands to return text result like 'path'
  sub-command, rather printing text result.  'paths' may return multiple
  values as a result, so these values are returned as words in a space
  separated string. Exception made to real shells where each words is
  returned(printed as it is real shells) separately, like previously done.  As
  a side effect also, if an error occur a 'false' boolean will be returned
  rather resulting text.  Adapt non-regression tests to align 'paths' test on
  shell_text procedure rather shell_echo.

2017-11-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles/modbad/path,
  testsuite/modulefiles/modbad/paths,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.90-avail/070-full.exp: 'path' and 'paths' are only avail
  from command line

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.20-locate/038-defcontext.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/069-cross.exp,
  testsuite/modules.70-maint/100-path.exp: Make sub-commands return text
  rather printing text  Introduce renderText procedure to return a text string
  rather a true/false boolean. On regular shells, it still echoes text, but on
  scripting languages a string text value is returned.  Apply this new
  mechanism to the 'path' sub-command. Adapt non-regression tests with the new
  return code for this sub-command.

  * modulecmd.tcl.in: Change test to detect something has been sent to stdout
  Test something has been rendered by looking at the settings arrays or lists
  rather checking stdout channel. (which does not seem to work, as it returns
  -1.

2017-11-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst: doc: desc is-{saved,used,avail} in NEWS

  * testsuite/install.00-init/005-init_ts.exp: testsuite: fix sh_family
  specific install tests  Was broken if one sh shell was not installed.

  * doc/source/module.rst, init/bash_completion.in, init/fish_completion,
  init/tcsh_completion.in, init/zsh-functions/_module, modulecmd.tcl.in,
  testsuite/modulefiles/modbad/is-avail,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.70-maint/156-is-avail.exp,
  testsuite/modules.90-avail/070-full.exp: Introduce 'is-avail' as module
  sub-command  Like for 'append-path', register 'is-avail' modulefile Tcl
  command as a module sub-command to make it reachable from the command line.
  Add the new command to the existing shell completion scripts (bash, tcsh
  fish, zsh).  Document new command in the module.1 man page.  Check
  'is-avail' command argument error in 071-args tests of 00-init suite. Test
  'module is-avail' cannot be called from a modulefile with 151-module-onlytop
  in 50-cmds suite. Add 155-is-avail tests in 70-maint suite to validate new
  sub-command.  Acknowledgment: this development has been made and funded
  within the framework of the PRACE Fifth Implementation Phase (PRACE-5IP)
  project (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's
  Horizon 2020 research and innovation programme (2014-2020) under grant
  agreement no. 730913.

  * doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modulefiles/info/isavail,
  testsuite/modules.50-cmds/322-is-avail.exp: Add 'is-avail' modulefile
  command  Introduce 'is-avail' modulefile command to check, following the
  same spirit than 'is-loaded', if any of the passed modulefiles exists in
  enabled in MODULEPATH.  Document new command in modulefile.4 and test it
  with a 322-is-avail tests in 50-cmds suite.  Acknowledgment: this
  development has been made and funded within the framework of the PRACE Fifth
  Implementation Phase (PRACE-5IP) project (http://www.prace-ri.eu/).
  PRACE-5IP receives funding from the EU's Horizon 2020 research and
  innovation programme (2014-2020) under grant agreement no. 730913.

  * doc/source/module.rst, init/bash_completion.in, init/fish_completion,
  init/tcsh_completion.in, init/zsh-functions/_module, modulecmd.tcl.in,
  testsuite/modulefiles/modbad/is-used,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.70-maint/155-is-used.exp,
  testsuite/modules.90-avail/070-full.exp: Introduce 'is-used' as module
  sub-command  Like for 'append-path', register 'is-used' modulefile Tcl
  command as a module sub-command to make it reachable from the command line.
  Add the new command to the existing shell completion scripts (bash, tcsh
  fish, zsh).  Document new command in the module.1 man page.  Check 'is-used'
  command argument error in 071-args tests of 00-init suite. Test 'module
  is-used' cannot be called from a modulefile with 151-module-onlytop in
  50-cmds suite. Add 154-is-used tests in 70-maint suite to validate new
  sub-command.  Acknowledgment: this development has been made and funded
  within the framework of the PRACE Fifth Implementation Phase (PRACE-5IP)
  project (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's
  Horizon 2020 research and innovation programme (2014-2020) under grant
  agreement no. 730913.

  * doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modulefiles/info/isused,
  testsuite/modules.50-cmds/321-is-used.exp: Add 'is-used' modulefile command
  Introduce 'is-used' modulefile command to check, following the same spirit
  than 'is-loaded', if any of the passed directories has been enabled in
  MODULEPATH.  Document new command in modulefile.4 and test it with a
  321-is-used tests in 50-cmds suite.  Acknowledgment: this development has
  been made and funded within the framework of the PRACE Fifth Implementation
  Phase (PRACE-5IP) project (http://www.prace-ri.eu/). PRACE-5IP receives
  funding from the EU's Horizon 2020 research and innovation programme
  (2014-2020) under grant agreement no. 730913.

2017-11-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst, init/bash_completion.in, init/fish_completion,
  init/tcsh_completion.in, init/zsh-functions/_module, modulecmd.tcl.in,
  testsuite/modulefiles/modbad/is-saved,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.70-maint/154-is-saved.exp,
  testsuite/modules.90-avail/070-full.exp: Introduce 'is-saved' as module
  sub-command  Like for 'append-path', register 'is-saved' modulefile Tcl
  command as a module sub-command to make it reachable from the command line.
  Add the new command to the existing shell completion scripts (bash, tcsh
  fish, zsh).  Document new command in the module.1 man page.  Check
  'is-saved' command argument error in 071-args tests of 00-init suite. Test
  'module is-saved' cannot be called from a modulefile with 151-module-onlytop
  in 50-cmds suite. Add 154-is-saved tests in 70-maint suite to validate new
  sub-command.  Acknowledgment: this development has been made and funded
  within the framework of the PRACE Fifth Implementation Phase (PRACE-5IP)
  project (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's
  Horizon 2020 research and innovation programme (2014-2020) under grant
  agreement no. 730913.

  * doc/source/modulefile.rst, modulecmd.tcl.in,
  testsuite/modulefiles/info/issaved,
  testsuite/modules.50-cmds/320-is-saved.exp,
  testsuite/modules.90-avail/070-full.exp: Add 'is-saved' modulefile command
  Introduce 'is-saved' modulefile command to check, following the same spirit
  than 'is-loaded', if any of the passed collections exists.  Document new
  command in modulefile.4 and test it with a 320-is-saved tests in 50-cmds
  suite.  Acknowledgment: this development has been made and funded within the
  framework of the PRACE Fifth Implementation Phase (PRACE-5IP) project
  (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's Horizon
  2020 research and innovation programme (2014-2020) under grant agreement no.
  730913.

2017-11-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/020-module.exp: testsuite: use unk mod to ensure
  !is-loaded test

  * NEWS.rst: doc: desc *-path and is-loaded cmds in NEWS

  * testsuite/bin/install_test_tcl, testsuite/install.00-init/020-module.exp:
  testsuite: test a command return false in install suite  Add tests in
  install testsuite to check commands returning true or false as result. Use
  new sub-command 'is-loaded' for test.

  * doc/source/module.rst, init/bash_completion.in, init/fish_completion,
  init/tcsh_completion.in, init/zsh-functions/_module, modulecmd.tcl.in,
  testsuite/modulefiles/modbad/is-loaded,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.70-maint/153-is-loaded.exp,
  testsuite/modules.90-avail/070-full.exp: Introduce 'is-loaded' as module
  sub-command  Like for 'append-path', register 'is-loaded' modulefile Tcl
  command as a module sub-command to make it reachable from the command line.
  Improve 'cmdModuleResurface' procedure to set a global 'g_return_false' flag
  when 'is-loaded' command returns 0. If 'g_return_false' flag is set shell
  code rendering will end with a false value returned.  Add the new command to
  the existing shell completion scripts (bash, tcsh fish, zsh).  Document new
  command in the module.1 man page.  Check 'is-loaded' command argument error
  in 071-args tests of 00-init suite. Test 'module is-loaded' cannot be called
  from a modulefile with 151-module-onlytop in 50-cmds suite. Add
  153-is-loaded tests in 70-maint suite to validate new sub-command.
  Acknowledgment: this development has been made and funded within the
  framework of the PRACE Fifth Implementation Phase (PRACE-5IP) project
  (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's Horizon
  2020 research and innovation programme (2014-2020) under grant agreement no.
  730913.  Closes #116

  * testsuite/modules.00-init/071-args.exp: testsuite: tests bad arg number
  for *-path cmds

  * testsuite/modules.70-maint/150-append-path.exp,
  testsuite/modules.70-maint/151-prepend-path.exp,
  testsuite/modules.70-maint/152-remove-path.exp: testsuite: add *-path tests
  in 70-maint  Add 150-append-path, 151-prepend-path and 152-remove-path tests
  to the 70-maint suite to check these new module sub-command.

2017-11-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/modbad/append-path,
  testsuite/modulefiles/modbad/autoinit, testsuite/modulefiles/modbad/foo,
  testsuite/modulefiles/modbad/help,
  testsuite/modulefiles/modbad/prepend-path,
  testsuite/modulefiles/modbad/remove-path,
  testsuite/modules.50-cmds/151-module-onlytop.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: add 151-module-onlytop
  in 50-cmds suite  Check module sub-commands that cannot be called within
  modulefile.

  * doc/source/module.rst, init/bash_completion.in, init/fish_completion,
  init/tcsh_completion.in, init/zsh-functions/_module, modulecmd.tcl.in:
  Improve new {append,prepend,remove}-path commands  Refactor code to call
  from the module command line modulefile-specific commands. These commands
  can only be called from the command line, not when calling 'module'
  procedure from a modulefile, to avoid any ambiguity.  When parsing command
  line arguments, check context to know if '-d' means '--default' (avail
  command) or '--delim' (*-path commands).  Add the new commands to the
  existing shell completion scripts (bash, tcsh, fish, zsh).  Document new
  commands in the module.1 man page.  Acknowledgment: this development has
  been made and funded within the framework of the PRACE Fifth Implementation
  Phase (PRACE-5IP) project (http://www.prace-ri.eu/). PRACE-5IP receives
  funding from the EU's Horizon 2020 research and innovation programme
  (2014-2020) under grant agreement no. 730913.

2017-03-02  Bert Wesarg <bert.wesarg@googlemail.com>

  * modulecmd.tcl.in: New subcommands to run (prepend|append|remove)-path
  directly from the command line.

2017-11-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst: doc: desc module function return and stdout spool

  * modulecmd.tcl.in, testsuite/modulefiles/puts/1,
  testsuite/modulefiles/puts/2, testsuite/modulefiles/puts/3,
  testsuite/modulefiles/puts/4, testsuite/modulefiles/puts/5,
  testsuite/modulefiles/puts/6, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/310-puts.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.90-avail/070-full.exp: Spool puts stdout command to render
  after env changes  Supersede 'puts' command to catch content sent to stdout
  within modulefile in order to postpone content channel send after rendering
  on stdout the relative environment changes required by the modulefile.  By
  doing so, environment variable set within modulefile will be available when
  outputing directly command to the stdout channel.  A 'putsModfileCmd'
  procedure is added to catch all 'puts' call in a modulefile interpretation.
  This procedure analyzes if the puts command targets the stdout channel. If
  so, command argument is saved in a 'g_stdoutPuts' global list to be then
  processed during renderSettings. If no, the real puts is called (for stderr
  send for instance).  Add 50-cmds/310-puts non-regression tests to garanty
  all kind of puts command are well processed.  Closes #113

2017-11-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/cmake.in, init/perl.pm.in, init/python.py.in, init/ruby.rb.in: Return
  dummy true on compat module function  Make compatibility module function to
  always return a value to be able to check function result either new main
  version or compat version is called.  Adapt cmake, perl, python and ruby
  compat module function to return a true value. Always true is returned as
  compat version does not handle returning error exit code.

  * modulecmd.tcl.in, testsuite/install.00-init/020-module.exp,
  testsuite/modules.00-init/006-procs.exp: Protect sensitive unsetenv on Tcl
  shell  When rendering an unsetenv modulefile command, protect the
  corresponding "unset env(VAR)" with a 'catch' Tcl command as unset will
  raise an error if env(VAR) does not exist prior to unset it.

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.20-locate/050-locrc.exp: Render 'true' only if something
  output already  Optimize content sent to stdout by only sending 'true'
  statement if something else was sent before that. Nothing written on stdout
  means everything is fine and the module function defined for all shells
  already take that into account, as assigned result status is set to true
  before calling for modulecmd.tcl.  With this change, stdout channel is left
  empty for sub-commands not outputing shell code like avail, help, ...

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp: Align 'true' rendering of
  sh/csh/fish with other shells  When calling for a 'true' statement at the
  end of shell code rendering, also express a true statement for sh/csh/fish
  as it is the case for other shells.  True statement will also be produced
  even if something has already been sent to stdout channel. To ensure in all
  cases that shell code will finish on a true statement if code is correctly
  generated.

2017-11-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Render true/false with a
  variable assignment  Set a local variable on shells to return true or false
  status, like already done on cmake and python. This way shells treat the
  return status in the same way.  For other shells that cmake and python, it
  does not change behavior as the variable assignement returns the value
  assigned, so it still returns a boolean as last rendered operation.  'real'
  shells are not touched as they already return in all cases a boolean status
  without any specific assignment.  Prior to modulecmd.tcl execution, the
  variable used for returned status assignement is initialized to 'true'. This
  way we are sure the variable will always be set and with a default 'true'
  value we may optimize rendering as no rendering means true.

2017-11-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.70-maint/070-display.exp: Rename
  renderError/Ok in renderFalse/True

  * modulecmd.tcl.in, testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.10-use/080-access.exp,
  testsuite/modules.10-use/090-bad.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/035-defname.exp,
  testsuite/modules.20-locate/038-defcontext.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.50-cmds/282-info-command.exp,
  testsuite/modules.50-cmds/283-info-command-exp.exp,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp,
  testsuite/modules.50-cmds/302-interp-cascaded.exp,
  testsuite/modules.60-initx/010-list.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/030-switch.exp,
  testsuite/modules.60-initx/040-prepend.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp,
  testsuite/modules.60-initx/080-access.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/050-saverm.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/043-listno.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/048-listlongno.exp,
  testsuite/modules.70-maint/056-whatis-nullpath.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/120-autoinit.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.80-deep/068-transitive.exp,
  testsuite/modules.80-deep/080-access.exp,
  testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/060-empty.exp,
  testsuite/modules.90-avail/070-full.exp,
  testsuite/modules.91-sort/020-avail.exp: Render 'true' or 'false' at end of
  all sub-commands  Until now some module sub-commands did not finish their
  run with an ok statement when everything goes well. It was the case for
  avail, aliases, list, apropos/search/keyword, save*, init* and help (without
  arg). However when some errors occurred on these commands, they were
  returning an error statement.  To apply same behavior to all commands
  whatever the result is (error occurred or not) a call to renderSettings is
  made after all commands which will produce a true or false statement sent to
  stdout.  As a consequence the return value of all module sub-command call
  can be checked against a true/false value.  Even if modulecmd.tcl should now
  return a true/false statement, keep checks on the intermediate variable
  required on python and cmake shells to guaranty a false boolean return in
  case very bad stuff happened within modulecmd.tcl not producing the
  intermediate variable statement.  Adapt all non-reg tests to get correct
  return code (OK or ERR).  Note that when apropos/search/keyword hit a
  modulefile error when interpreting, it will return a 'false' statement even
  if result output seem correct (as these kind of error are not hidden to
  better read obtained result).

2017-11-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Rename _mlret var to _mlstatus
  in autoinit  To better distinguish this internal variable from the _mlre
  variable used for quarantine mechanism.

  * testsuite/bin/install_test_cmake, testsuite/bin/install_test_perl,
  testsuite/bin/install_test_python, testsuite/bin/install_test_r,
  testsuite/bin/install_test_ruby, testsuite/bin/install_test_tcl: testsuite:
  adapt install scripts to check ret value  Adapt tcl, perl, python, ruby,
  cmake and R install test scripts to check module command result based on new
  boolean return value system.

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Adapt
  perl/python/cmake/r autoinit to return status  Change module function
  defined for perl, python, cmake and R, to return the status (true or false)
  obtained at rendering end.  Also drop on perl the carp error handling, to
  get same error handling for all shells.

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/070-display.exp: Make shells return 'false'
  rather raising exception  Use an expression for each supported shell to say
  'false' when error occurred during modulecmd.tcl process. This was already
  the behavior for the sh/csh/fish shells but a change is made to the other
  lang shells where previously an exception was raised in case of error.
  Moving from a raised exception to a boolean return seem to be more
  appropriate for the calling scripts, which will not explode anymore each
  time a modulefile is not found for instance.  Boolean return opens the path
  to a return value check on all supported shells (was only possible on
  sh/csh/fish before that).  Now all shells are aligned with a 'true' value
  returned in case of success rendering and a 'false' value returned in case
  of error.

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp: Make shells
  return 'true' when rendering ok  Add an expression for each supported shell
  to say 'true' when code rendering is perfomed and things are ok. A
  'renderOk' procedure is added following same principle than 'renderError'.
  These code additions keep the ability for the rendering to be called from
  the shell module function or from a direct execution. To achieve that
  instead of using a 'return true' statement, which would had no meaning
  outside of a module function, a true statement is expressed. Most of the
  shells will return the result from the last evaluated statement.  For shells
  not returning result from the last evaluated statement (python, cmake), a
  variable is set to true. This variable will be used in module function to
  return the status value.  For the sh/csh/fish shells, no code is rendered if
  something has already been sent to stdout, as in this case the last lines
  will return 'true' by itself.

2017-11-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/032-prepend.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/020-fqual.exp,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/035-defname.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/055-locrcerrs.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/065-rcerrs.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.20-locate/075-symlink.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/260-getenv.exp,
  testsuite/modules.50-cmds/280-info-specified.exp,
  testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.50-cmds/282-info-command.exp,
  testsuite/modules.50-cmds/283-info-command-exp.exp,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp,
  testsuite/modules.50-cmds/302-interp-cascaded.exp,
  testsuite/modules.60-initx/010-list.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/030-switch.exp,
  testsuite/modules.60-initx/040-prepend.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp,
  testsuite/modules.60-initx/080-access.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/043-listno.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/048-listlongno.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/056-whatis-nullpath.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/060-empty.exp,
  testsuite/modules.90-avail/070-full.exp,
  testsuite/modules.91-sort/020-avail.exp,
  testsuite/modules.91-sort/030-whatis.exp: testsuite: check out and err
  channels for all tests  Always use testouterr* procedures to check both
  stdout and stderr channels output.

  * modulecmd.tcl.in: Move autoinit code in a renderAutoinit proc  Move it out
  of renderSettings to improve overall readability.

  * modulecmd.tcl.in: No render struct change during display mode setenv

2017-11-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Interpret Tcl rendered code in
  proc context  When using module interface in a Tcl script, previous code was
  upleveling generated modules code to render environment changes. Now that
  env array is declared withing proc, eval can be used rather uplevel to
  render.  By the way, if things are ok, do not exec true. Does not have sense
  in a Tcl script context.

2017-11-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/006-procs.exp: Express true or
  false on sh/csh/fish with test  Use the buildins 'test' function to express
  true or false value on sh-kind, csh-kind or fish shells rather making a call
  to an external command (/bin/true and /bin/false).

  * NEWS.rst, doc/source/module.rst: doc: desc MODULES_SILENT_SHELL_DEBUG in
  module.1 and NEWS

  * INSTALL.rst: doc: add --with-quarantine-vars in INSTALL

  * testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/030-options.exp: testsuite: check
  MODULES_SILENT_SHELL_DEBUG  Simple tests to verify
  MODULES_SILENT_SHELL_DEBUG environment variable does not break module
  command.

2017-11-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/010-environ.exp,
  testsuite/install.00-init/060-quar.exp, testsuite/modulefiles.other/quar,
  testsuite/modules.00-init/110-quar.exp: testsuite: shield quar tests against
  cur env

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in, modulecmd.tcl.in,
  testsuite/modules.70-maint/120-autoinit.exp: Silent sh-shells debug if
  MODULES_SILENT_SHELL_DEBUG  Introduce MODULES_SILENT_SHELL_DEBUG environment
  variable to silent the xtrace and verbose output on sh-kind shells.  When
  set (means MODULES_SILENT_SHELL_DEBUG=1), current xtrace and verbose flags
  are saved then these shell properties are disabled. Once execution is
  finished, saved setup is restored.  This mechanism is defined on
  initialization scripts, at the beginning to silent, at the end to restore
  defined behavior. It is also defined within the module function following
  exact same principle.  By default, xtrace and verbose shell properties are
  applied to module function and initialization script if enabled in calling
  shell script or interactive session. These properties are disabled in module
  context only if MODULES_SILENT_SHELL_DEBUG is set to '1'.  Notice that if
  xtrace/verbose properties are set, shell code that leads to disable them
  when MODULES_SILENT_SHELL_DEBUG is set will be outputed as debugging is set
  during these operations.  The mechanism only applies to the SH-shell family.
  Closes #121

  * NEWS.rst: doc: describe quarantine mechanism in NEWS

2017-11-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst: doc: reorder env var in module.1

  * doc/source/module.rst: doc: describe quar-related variables in module.1

2017-11-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml: travis: revert array handling of CONFIGURE_OPTS  Array set is
  not understood on travis env setup. Revert to single-quote string set. Just
  check a simpler quarantine configuration for the moment.

  * .travis.yml: travis: handle CONFIGURE_OPTS as shell array

  * .travis.yml: travis: check quarantine configuration in some builds

  * testsuite/install.00-init/060-quar.exp: testsuite: adapt install suite for
  quar config  Add a specific test in 060-quar in case quarantine has been
  configured at build time, to check chosen configuration is correctly applied
  in shells. This test replaces all other quarantine tests, as init script is
  set with quarantine-related variables and the regular tests cannot supersede
  that.

  * contrib/rpm/environment-modules.spec.in: rpm: define LD_LIBRARY_PATH as
  quarantine var

  * Makefile.inc.in, configure, init/Makefile, init/bash.in, init/cmake.in,
  init/fish.in, init/ksh.in, init/perl.pm.in, init/python.py.in, init/r.R.in,
  init/ruby.rb.in, init/sh.in, init/tcl.in, init/zsh.in, site.exp.in: install:
  add --with-quarantine-vars  Add --with-quarantine-vars configure option to
  define quarantine mechanism configuration at build time.  Value passed to
  the configure option will be used by Makefile to initialize in the various
  initialization scripts the MODULES_RUN_QUARANTINE variable and eventual
  MODULES_RUNENV_<VAR>.

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Use
  _ml-prefixed var name to return code on sh shells

2017-11-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in, modulecmd.tcl.in,
  testsuite/modules.70-maint/120-autoinit.exp: Handle IFS in a sh-compatible
  way  On sh shell like dash, IFS cannot be local var. Also when setting IFS
  with the "IFS=$' ';" syntax $ character is also added to the IFS value.

  * testsuite/install.00-init/060-quar.exp,
  testsuite/modules.00-init/110-quar.exp: testsuite: check quar mech with ' '
  and '"' val  Adapt quarantine mechanism tests to check variable values
  containing space and double-quote.  Single quote currently leads to issue.
  Should not be an immediate problem due to the kind of variables and relative
  values this mechanism will handle (LD_LIBRARY_PATH, LD_PRELOAD, etc).

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Put
  autoinit code in braces as much as possible  Use braces for the different
  shell autoinit code to avoid special character espacing as much as we can in
  these complex piece of shell code.  In some cases, braces cannot be used:
  when variable value should be replaced and when a beginning brace does not
  match a close brace in the same string).

  * testsuite/install.00-init/060-quar.exp: testsuite: test bad libpath setup
  in install/060-quar  Check fake LD_LIBRARY_PATH setup is taken into account
  in 060-quar test of install testsuite before running test. Skip test if
  tclsh does not rise to the bait.

2017-11-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in, modulecmd.tcl.in,
  testsuite/install.00-init/060-quar.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Ensure correct IFS on sh-kind
  script or func  With quarantine mechanism sh-kind init scripts or module
  function are sensitive to IFS value. If space character is not part of IFS,
  eval command will not be able to understand command-line string.  This
  commit add code in init scripts and module function to guaranty correct
  value for IFS.

  * testsuite/install.00-init/060-quar.exp: testsuite: check runenv in
  install.00-init/060-quar  Add test in 060-quar of install suite to check
  runtime environment value for quarantine variable are effectively set. Test
  is made by providing a bad LD_LIBRARY_PATH that will crash all execs.

2017-11-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/r.R.in, modulecmd.tcl.in, testsuite/install.00-init/060-quar.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Add quarantine mechanism
  support to r

  * init/cmake.in, modulecmd.tcl.in,
  testsuite/modules.70-maint/120-autoinit.exp: Add quarantine mechanism
  support to cmake

  * init/ruby.rb.in, modulecmd.tcl.in,
  testsuite/modules.70-maint/120-autoinit.exp: Add quarantine mechanism
  support to ruby

2017-11-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/python.py.in, modulecmd.tcl.in,
  testsuite/modules.70-maint/120-autoinit.exp: Add quarantine mechanism
  support to python

  * init/perl.pm.in, modulecmd.tcl.in,
  testsuite/modules.70-maint/120-autoinit.exp: Add quarantine mechanism
  support to perl

  * init/tcl.in, modulecmd.tcl.in, testsuite/install.00-init/060-quar.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Add quarantine mechanism
  support to tcl

2017-11-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/fish.in, modulecmd.tcl.in,
  testsuite/modules.70-maint/120-autoinit.exp: Add quarantine mechanism
  support to fish

  * modulecmd.tcl.in, testsuite/install.00-init/060-quar.exp,
  testsuite/modules.00-init/110-quar.exp: No quarantine mechanism support on
  CSH-kind shells  Tried to make it fit within the 'module' alias, with no
  success. 'foreach' and nested 'if' do not cope with csh alias.  Tests have
  been adapted to skip csh/tcsh shells. Also MODULES_RUN_QUARANTINE variable
  is purely ignored if detected shell is from CSH family.

2017-11-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Improve
  generation of csh autoinit code

2017-11-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in, modulecmd.tcl.in,
  testsuite/install.00-init/060-quar.exp,
  testsuite/modules.00-init/110-quar.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Improve variable name check in
  MODULES_RUN_QUARANTINE  A variable name cannot start with a [0-9] character.

  * testsuite/modules.70-maint/120-autoinit.exp: testsuite: fix autoinit test
  in coverage mode

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in, modulecmd.tcl.in,
  testsuite/install.00-init/060-quar.exp,
  testsuite/modules.00-init/110-quar.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Validate variable names set in
  MODULES_RUN_QUARANTINE  Test that the names of the environment variable
  defined in MODULES_RUN_QUARANTINE are valid names.  Add test in quarantine
  setup code within init scripts (silent check) and also test in
  modulecmd.tcl. The latter reports a warning if a bad name is detected.  Add
  a non-regression test in modules.00-init and install.00-init test suites.

2017-11-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/010-environ.exp,
  testsuite/install.00-init/050-crossshell.exp,
  testsuite/install.00-init/060-quar.exp: testsuite: add 060-quar to
  install.00-init suite  Check real operation of the quarantine mechanism at
  the initialization stage and during call of module commands.  Setup a fake
  libtcl .so library to verify quarantine is correctly protecting tclsh at
  runtime.

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in: init: setup quarantine
  before autoinit for SH shells  As now a call to modulecmd.tcl defines the
  module function and surrounding initial environment, this execution should
  also be shield against bad environment with quarantine mechanism.

2017-11-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles.other/quar,
  testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.00-init/110-quar.exp,
  testsuite/modules.70-maint/120-autoinit.exp: testsuite: add 110-quar tests
  in 00-init suite  Check handling of environment variables related to the
  quarantine runtime feature  Adapt tests in 70-maint/120-autoinit to new
  module function code.

  * modulecmd.tcl.in: Introduce quarantine runtime (sh shells only)  Introduce
  a mechanism set within module function definition to modify modulecmd.tcl
  runtime environment in order to protect it from side-effect coming from the
  current user environment definition.  For instance, if modulecmd.tcl is
  installed to work with a tclsh version 8.4 but current environment has
  enabled a libtcl8.6.so in LD_LIBRARY_PATH, this environment will not be able
  to run modulecmd.tcl anymore. Quarantine runtime mechanism helps to define a
  sane LD_LIBRARY_PATH value which will be set for modulecmd.tcl to guaranty
  correct operations.  The mechanism is piloted by environment variables.
  First of all MODULES_RUN_QUARANTINE, a space-separated list of environment
  variable names. Every variable found in MODULES_RUN_QUARANTINE will be set
  in quarantine during the modulecmd.tcl runtime. Their value will be set
  empty or set to the value of the corresponding MODULES_RUNENV_<VAR>
  environment variable if defined. The initial value these variables have will
  be passed to modulecmd.tcl via the '<VAR>_modquar' variable. Then once
  modulecmd.tcl is started it restores <VAR> to the content found in
  <VAR>_modquar (its original value).  This commit adds the feature for the
  SH-kind shells only (sh, bash, ksh and zsh). Some complex shell code was
  required to distinguish an unset variable from a variable set empty: `eval
  'echo ${'$var'+x}'`.  Code is also slightly different for sh shell than
  other sh-kind shells due to a different supported syntax to define local
  variable. No 'typeset' builtin is found on a pure sh shell, like dash. 'ksh'
  on its side does not understand 'local' builtin. So code for 'sh' shell uses
  'local' builtin and other sh-kind shells use 'typeset'.  Zsh code has a
  difference compared to the other sh shells, as word splitting need to be
  explicitly enabled with a '${=var}' syntax.  Space is used as variable name
  separator in MODULES_RUN_QUARANTINE variable, as it is the most convenient
  separator to work with in SH-kind shells (no need to adapt IFS).

  * site.exp.in, testsuite/modules.70-maint/120-autoinit.exp: testsuite: add
  'install_tclsh' var in site.exp

2017-11-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/Makefile: install: fix use of ifeq/wildcard in Makefile  Prefer
  'rmdir --ignore-fail-on-non-empty' which is evaluated at runtime. ifeq is
  evaluated at Makefile read.

  * doc/source/conf.py: Fix no branch name for version release on RTD builds

  * Makefile, doc/source/conf.py: Correct version release tag in Makefile and
  Sphinx

  * INSTALL.rst, NEWS.rst: doc: describe pager support in NEWS

  * .travis.yml: travis: test various pager configure setup

  * modulecmd.tcl.in: A 'cat' pager value set in script means disabling

  * modulecmd.tcl.in: --paginate enables paging only not disabled from script

  * modulecmd.tcl.in: Detect use of less/cat pager even if set as full path

2017-10-31  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * INSTALL.rst, Makefile, Makefile.inc.in, configure,
  contrib/rpm/environment-modules.spec.in, modulecmd.tcl.in, site.exp.in,
  testsuite/modules.00-init/100-pager.exp: install: add --with-pager and
  --with-pager-opts  Add --with-pager and --with-pager-opts configure options
  to choose at build time pager setup.

  * modulecmd.tcl.in: Remove g_use_pager, redundant with g_pager  Set g_pager
  to the empty value to disable message output paging by default.

2017-10-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/010-environ.exp,
  testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.00-init/100-pager.exp: testsuite: add 100-pager tests in
  00-init suite  Check handling of options related to pager feature.

2017-10-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Add '-K' option to less pager  Quit less pager on
  interupt (^C typed) instead of trapping it. As module is set as a shell
  function, SIGINT signal is first send to this function and its underlying
  children (modulecmd + less pager). If less trap this interput it will remain
  alone after end of module function and modulecmd process, but not in direct
  interaction with terminal. So it seems preferable to end pager at the same
  time its parent process vanish.  Without option '-K', less continues until
  reading all its remaining stdin buffer.  An alternative would be to trap
  signal within modulecmd, but it implies using the TclX extension to get
  access to the 'signal' procedure. Moreover, after effect will quite be the
  same, as shell function is terminated and remaining processed are not in
  direct interaction with terminal.  For the record, trapping signal in
  modulecmd makes this process able to finish right after the pager command.
  Procedure designated to trap signal will be run once currently blocking IO
  is processed. Then close of pipe descriptor will finished once pager finish
  in turns to process it remaining stdin buffer.  Instead of using TclX,
  Expect extension may be used to trap signal but with exact same handling
  behavior than TclX.  Another lead would be to trap/untrap signal within
  shell function, but signal is then completely ignored.

  * modulecmd.tcl.in: Increase pager fd buffer size to 64k  More aligned with
  the buffer size 'less' is setting-up. Should be sufficent to handle most
  kind of output content in one pass.

  * modulecmd.tcl.in: Handle case when pager is ended (killed or quit)  Catch
  cases when pager is ended before all messages are reported to it ('q'
  pressed or process killed).  Error raised from 'puts' call are ignored with
  'catch'. As we handle here informational messages, do not end the full
  modulecmd process when message channel is dead.  Also protect pager fd
  operations in cleanupAndExit, in case pipe is not operational anymore.

2017-10-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Fetch tty cols only if needed via getTtyColumns proc

  * modulecmd.tcl.in: Report release nb & info via reportVersion proc

  * modulecmd.tcl.in: Report usage message in a single output call

  * modulecmd.tcl.in: Enable pager during first report call  Instead of always
  setting-up pager if enabled, configure and start it only if reporting
  message. This way, module commands not reporting anything will not got the
  overhead of the pager setup.

2017-10-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.rst, modulecmd.tcl.in: Introduce pager support  Paginate
  stderr output into paging command, using 'less' by default, following the
  same fashion and behavior than 'git' command.  Pager is enabled by default
  in modulecmd script. New global variables 'g_use_pager', 'g_pager' and
  'g_pager_opts' control default behavior of module command.  Pager is enabled
  only if stderr stream is attached to a terminal.  Pager setup can then be
  superseeded by environment variables. If LESS variable is set and paging
  command is set to 'less', default pager options are cleared to use those
  defined in LESS variable.  If MODULES_PAGER variable is defined, its value
  superseeds paging activation, command and options. If this variable is
  empty, paging is disabled.  If PAGER variable is defined and MODULES_PAGER
  is unset, PAGER value superseeds paging activation, command and options. If
  this variable is empty, paging is disabled.  Default behavior and
  MODULES_PAGER or PAGER environment variables can be superseeded by
  command-line options: --paginate to enable paging and --no-pager to disable
  it.  When pager is enabled, a pipe file descripted is ignited to the paging
  command and option for stderr stream. Once set, this file descriptor is used
  by all report procedures to output message content, rather using stderr.
  modulecmd command-line parse has been revised not to output message during
  argument treatment. Debug, warning and error messages are saved to then be
  displayed once pager setup is achieved.  An 'initPager' procedure is
  introduced to configure then start paging. A 'cleanupAndExit' is added to
  close pager before exiting if pager has been started.

2017-10-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS.rst: doc: describe work around autoinit command in NEWS

  * .gitignore, .travis.yml, Makefile, init/Makefile,
  .../example/{.modulespath => .modulespath.in}, testsuite/example/{modulerc
  => modulerc.in}, testsuite/modules.70-maint/120-autoinit.exp:
  testsuite/travis: rework tests with ex. init config  Use make for test
  config setup rather direct commands in travis configuration.

2017-10-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml: travis: fix install/cmake/R issues

  * testsuite/install.00-init/010-environ.exp: testsuite: fix bash func
  cleaning in install suite

  * modulecmd.tcl.in, testsuite/install.00-init/020-module.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Same kind of error raise code
  for Tcl than other langs  In case of error, an error exit code will be
  returned (1 instead of 0).

  * .travis.yml: travis: add other lang pkgs for testinstall

2017-10-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Remove
  extra newline on Perl autoinit code

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Messages
  should go to stderr on Tcl autoinit code

2017-10-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_cmake, testsuite/bin/install_test_perl,
  testsuite/bin/install_test_python, testsuite/bin/install_test_r,
  testsuite/bin/install_test_ruby, testsuite/bin/install_test_tcl,
  testsuite/config/unix.exp, testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/020-module.exp,
  testsuite/install.00-init/022-module-compat.exp,
  testsuite/install.00-init/030-options.exp: testsuite: check all langs in
  install testsuite

  * init/Makefile: install: skip initdir rmdir if not empty on uninstall

2017-10-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml, testsuite/example/.modulespath, testsuite/example/modulerc,
  testsuite/modules.70-maint/120-autoinit.exp: testsuite: check various
  autoinit setup  Add example modulerc and .modulespath configuration and test
  autoinit behavior when these examples are installed in init directory.

  * modulecmd.tcl.in: Deprecated @prefix@/modulerc in autoinit  Keep behavior
  of init script where only one modulerc file is sourced if it exists (in
  @initdir@).

2017-10-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash.in, init/cmake.in, init/csh.in, init/fish.in, init/ksh.in,
  init/perl.pm.in, init/python.py.in, init/r.R.in, init/ruby.rb.in,
  init/sh.in, init/tcl.in, init/zsh.in: init: shell scripts now rely on
  autoinit command  Make use of autoinit module command to initialize module
  command and its initial surrounding environment (default value for
  MODULESHOME, MODULEPATH, LOADEDMODULES and parse of init/.modulespath).
  Then if compatibility version is currently activated redefined the module
  command to point to the compat binary. But the compat version will benefit
  from the surrounding environment initialization made by autoinit.  With this
  change, activated compatibility version will also get its environment
  initialized by the init/modulerc file whereas before this change only the
  main version was affected by this setup file.

  * modulecmd.tcl.in, site.exp.in,
  testsuite/modules.70-maint/120-autoinit.exp: Use configure tags to set dir
  locations in autoinit  Define in autoinit command the value of MODULESHOME
  based on @prefix@ configure tag and initialization directory based on
  @initdir@ rather guessing them from modulecmd.tcl location.  Same location
  approach that initialization scripts this way.

2017-10-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, modulecmd.tcl.in: Parse init/.modulespath in autoinit  Parse
  init/.modulespath like done in initialization script. Call cmdModuleUse for
  each path entry. This way, relative paths are solved before being registered
  in MODULEPATH variable. Now reference counter for MODULESPATH is also set
  when enabling the configured paths.

  * modulecmd.tcl.in: Define empty MODULEPATH/LOADEDMODULES in autoinit  If
  not previously defined, set an empty MODULEPATH and LOADEDMODULES like done
  in init script. Do not source modulerc scripts if MODULEPATH or
  LOADEDMODULES are non-empty.

  * modulecmd.tcl.in: Define autoinit surrounding env vars in
  cmdModuleAutoinit  Rather in renderSettings where only the module command is
  defined depending of current shell. Enables to make use of 'setenv' to
  define surrounding variables like MODULESHOME and call to 'module source'
  before the rendering stage.

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Make
  autoinit shell code fit init script definitions  Use contribution from
  Thomas Zeiser for CSH autoinit code (Thomas Zeiser).

2017-10-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.70-maint/120-autoinit.exp: Produce
  redirect function code on autoinit for sh/fish  Integrate the generation of
  the _moduleraw function on sh-kind and fish shells when calling 'autoinit'
  command.  As for initialization scripts, stderr output redirection is set
  when a terminal is attached to stderr channel. A 'isATty' procedure is
  introduced to detect terminal attachement.

2017-10-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash.in, init/fish.in, init/ksh.in, init/sh.in, init/zsh.in: init:
  redirect stderr msg on stdout if terminal  Change from previous behavior
  where redirection were set if shell was interactive. With this change, a 'sh
  script' command launched from a terminal session will setup module stderr
  redirection whereas previously it was not the case as script was not ran in
  interactive mode.  Shell interactive mode is useful to know that interaction
  will occur on stdin (interesting for completion setup). Knowing session is
  attached to a terminal seems to be the good pivot to adapt stdout or stderr
  functioning (help to determine if PAGER mode can be enabled or not on 'git')

2017-10-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, NEWS.rst, contrib/rpm/environment-modules.spec.in: Release of
  version 4.0.0

2017-10-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/index.rst: doc: add intro and refine toc of index page

  * configure: travis: fix full git repo detection in configure

  * .travis.yml: travis: increase git clone depth to catch last tag

  * contrib/rpm/environment-modules.spec.in: rpm: add 'modules-tcl' provides
  for auto-upgrade  When a previous 'modules-tcl' package is installed, the
  new 'environment-modules' package will automatically be found as an upgrade
  candidate.

  * NEWS.rst: doc: reference last additions for v4.0 to NEWS

  * INSTALL.rst: doc: describe compat version requirements in INSTALL

  * README.md: doc: add 'Transition from v3.2' section in README

  * INSTALL.rst, README.md: doc: describe sphinx requirement at install time

2017-10-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, contrib/doc2www, www/.htaccess, www/Makefile,
  www/c/INSTALL.html, www/c/NEWS.html, www/c/README.html, www/c/module.html,
  www/c/modulefile.html, www/index.html, www/modules.css: www: remove website
  content  Website content is simplified now docs are built with sphinx and
  hosted on Read The Docs. Remaining website content is moved from master
  branch to gh-pages branch.

  * .travis.yml: travis: fix manpath install on centos6 container

  * INSTALL.rst, MIGRATING.rst, NEWS.rst: doc: fix typo and layout in
  INSTALL/MIGRATING/NEWS

  * .gitattributes, .gitignore, Makefile, NEWS, NEWS.rst,
  contrib/rpm/environment-modules.spec.in, doc/Makefile, doc/source/NEWS.rst,
  doc/source/index.rst: doc: migrate NEWS doc from TXT to RST

  * .gitattributes, .gitignore, INSTALL.rst, INSTALL.txt, Makefile,
  doc/Makefile, doc/source/INSTALL.rst, doc/source/index.rst: doc: migrate
  INSTALL doc from TXT to RST

2017-10-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitattributes, .gitignore, MIGRATING.md => MIGRATING.rst, Makefile,
  contrib/rpm/environment-modules.spec.in, doc/Makefile,
  doc/source/MIGRATING.rst, doc/source/index.rst: doc: migrate MIGRATING doc
  from MD to RST  To integrate it into sphinx process and make it available on
  the Web.

  * doc/source/conf.py: doc: define sphinx required minimal version in conf

2017-10-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * www/index.html: www: reshape index for new project structure  Put
  download, docs and community information right after introduction section.
  Simplify content and link to Read The Docs for documentation material.

2017-10-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/install.00-init/030-options.exp: testsuite: fix utilities
  install test on csh shells

  * doc/source/module.rst, doc/source/modulefile.rst: doc: detail path
  variable elt counter in man-pages

  * MIGRATING.md, doc/source/diff_v3_v4.rst: doc: mention output redirection
  in migrate and diff

2017-10-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * site.exp.in, testsuite/install.00-init/022-module-compat.exp,
  testsuite/install.00-init/030-options.exp: testsuite: test compat version
  installation

  * .travis.yml: travis: add 'make srpm' test on centos

  * doc/Makefile: install: use rm rather sphinx to clean built docs

2017-10-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/rpm/environment-modules.spec.in: rpm: fix diff doc location in
  spec

  * testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/030-options.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/050-modpath.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/032-prepend.exp,
  testsuite/modules.20-locate/010-init_ts.exp,
  testsuite/modules.20-locate/020-fqual.exp,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/035-defname.exp,
  testsuite/modules.20-locate/038-defcontext.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/055-locrcerrs.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.20-locate/069-cross.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.20-locate/075-symlink.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.20-locate/095-cleanup.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/250-x-resource.exp,
  testsuite/modules.50-cmds/260-getenv.exp,
  testsuite/modules.50-cmds/280-info-specified.exp,
  testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.50-cmds/282-info-command.exp,
  testsuite/modules.50-cmds/283-info-command-exp.exp,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp,
  testsuite/modules.50-cmds/302-interp-cascaded.exp,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.61-coll/999-cleanup.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.70-maint/120-autoinit.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.70-maint/140-multiargs.exp,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/050-whatis.exp,
  testsuite/modules.80-deep/068-transitive.exp,
  testsuite/modules.80-deep/080-access.exp,
  testsuite/modules.80-deep/999-cleanup.exp,
  testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/070-full.exp,
  testsuite/modules.91-sort/010-init_ts.exp,
  testsuite/modules.91-sort/020-avail.exp,
  testsuite/modules.91-sort/030-whatis.exp,
  testsuite/modules.91-sort/999-cleanup.exp: testsuite: re modpath string if
  regexp test  Transform modulepath for regexp enabled tests (escape
  characters having a meaning in regexp like '+')

  * testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.20-locate/075-symlink.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.80-deep/022-switch.exp: testsuite: pass err number on
  shell_err  Migrate some ERR test cases to a non '_re' test if they do not
  require regexp.

  * testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/065-rcerrs.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.20-locate/075-symlink.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/089-info-type.exp,
  testsuite/modules.50-cmds/101-badfac.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.80-deep/021-unload.exp,
  testsuite/modules.80-deep/068-transitive.exp,
  testsuite/modules.91-sort/040-load.exp,
  testsuite/modules.95-version/040-xgetenv.exp: testsuite: no _re tests if
  regexp not needed

  * .gitattributes, .gitignore, Makefile, ...nt-modules.spec =>
  environment-modules.spec.in}: install: genereate RPM spec to ajust source0
  and release

2017-10-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/FAQ.rst, doc/source/index.rst: doc: add FAQ imported from SF
  wiki

  * www/.htaccess: www: add .htaccess file to redirect some docs to RTD

  * INSTALL.txt, Makefile, configure, contrib/rpm/environment-modules.spec,
  doc/Makefile, init/Makefile: install: use sed rather perl for substitutions
  Use sed instead of perl in configure and Makefile scripts as perl is not
  required anymore to build documentation. sed is a lighter requirement to
  build and install software.

  * README.md: doc: mention RTD in README

  * Makefile, doc/source/conf.py: install: no mention of master git branch in
  vers num

  * Makefile, doc/Makefile: install: broader usage of makefile
  translate-in-script

  * doc/Makefile: install: rm doc BUILD_DIR if exists only

2017-10-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, .travis.yml, INSTALL.txt, Makefile, Makefile.inc.in,
  README.md, configure, contrib/rpm/environment-modules.spec, doc/Makefile,
  doc/html/common.css, doc/source/version.py.in: install: adapt doc build
  process to sphinx  Change makefile to build doc with sphinx rather pod. Docs
  are now pregenerated in dist-tarball, to avoid requiring documentation build
  tool when installing from these dist-tarball.  Adapt travis conf & RPM spec
  file to the new documentation build process.

2017-10-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/conf.py, doc/source/index.rst: doc: introduce sphinx
  configuration  To build existing manpages and diff_v3_v4 document.

2017-10-03  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_v3_v4.pod, doc/source/diff_v3_v4.rst,
  doc/source/module.pod.in, doc/source/module.rst, doc/source/modulefile.pod,
  doc/source/modulefile.rst: doc: migrate from pod to rst  Transform source
  documents from POD format to reStructuredText to then benefit from Sphinx
  documentation framework and Read The Docs publishing capabilities.

2017-09-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/Makefile: install: set manpage date to modules build date

  * modulecmd.tcl.in: Remove license information on help/usage message

  * doc/Makefile: install: make doc only install man and txt  No install of
  HTML files, so no need to build them at make install.

  * .gitattributes, .gitignore, Makefile, doc/Makefile, init/Makefile,
  modulecmd.tcl.in, version.inc.in: install: handle version number through git
  tags  Introduce a version.inc file sourced by Makefiles, that holds release
  number and build information. Makefiles use these information to set correct
  version number in manpages and modulecmd.tcl script.  version.inc is present
  in dist tarball. This file is generated from version.inc.in file by main
  Makefile when working in git repository.  Release information are retrieved
  from the tags of the git repository. Release number corresponds to last git
  tag set. Build number is the result of the 'git describe' command: this
  information helps to know from what git branch and commit the current build
  is made of.

2017-09-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/rpm/environment-modules.spec: rpm: add version to modules-tcl
  Obsoletes statement  Comply with: https://fedoraproject.org/wiki/Packaging:G
  uidelines#Renaming.2FReplacing_Existing_Packages  Thanks to Aurelien
  Degremont for spotting this.  Fixes #133

  * doc/source/module.pod.in: doc: add EXIT STATUS section in module.1

  * MIGRATING.md, doc/source/diff_v3_v4.pod: doc: describe modulefiles hiding
  feature  In MIGRATING guide and diff reference doc.

  * testsuite/modules.50-cmds/180-unload.exp: testsuite: test unload of full
  pathname modulefile  Add test in 180-unload of 50-cmds suite to check a
  loaded module specified as full pathname correctly unloads.

2017-09-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/045-listlong.exp: Fix 'list' when full path mod
  is loaded  When a modulefile has been loaded using its full file path name,
  not its name relative to a modulepath, skip property search on 'list'
  command. Previously the property search applied to full path module were
  checking the whole current path tree to find modulefiles.  Introduces a
  isModuleFullPath procedure to help determine a given module name is
  specified as a full pathname or not.  Add tests to 70-maint suite to check
  'module list' behavior with full path name loaded modules.  Fixes #132

  * MIGRATING.md: doc: link to v4.0 closed issues in MIGRATING

2017-09-28  ebagrenrut <ebagrenrut@gmail.com>

  * contrib/rpm/environment-modules.spec:
  contrib/rpm/environment-modules.spec: Now Obsoletes: modules-tcl. Results in
  modules-tcl being removed by yum when environment-modules is installed.

2017-09-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/prereq/orlist,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: add OR-list test for
  prereq  Ensure correct error message report in case of OR-list of prereq.
  Clarifies #79 and #123.

2017-09-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles.path1/fodcross/2.7.13/sub-13,
  testsuite/modulefiles.path2/fodcross/2.7.13,
  testsuite/modules.20-locate/069-cross.exp: testsuite: mod corresp. to file
  or dir in diff modpath  Add location test for modulefiles spread in
  different modulepath directories where modulefile name corresponds to a file
  in one modulepath and corresponds to a directory in another modulepath.
  Ensure correct support for #63.

  * doc/source/diff_v3_v4.pod, doc/source/module.pod.in: doc:
  avail/apropos/whatis support glob patterns

  * MIGRATING.md, doc/source/diff_v3_v4.pod: doc: clarify submod unload during
  switch command

2017-09-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, Makefile: install: add dist-tar, dist-gzip and dist-bzip2
  targets  Add dist tarball variants to provide dist-bzip2 file required by
  RPM spec file. Source RPM can now be built with either:  $ make srpm  or  $
  make dist-bzip2 $ rpmbuild -ts modules-*.tar.bz2  Fixes #129

  * contrib/rpm/environment-modules.spec, contrib/scripts/createmodule.py,
  contrib/scripts/createmodule.sh: contrib: import createmodule.{sh,py}
  scripts  These scripts developed by Orion E. Poplawski are referenced by the
  environment-modules.spec file. Include them in repository to be able to
  generate RPM from the tarball.  Fixes #130

2017-09-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, contrib/rpm/environment-modules.spec, doc/Makefile,
  init/Makefile, modulecmd.tcl.in, testsuite/install.00-init/020-module.exp,
  testsuite/install.00-init/025-autoinit.exp,
  testsuite/install.00-init/040-subshell.exp,
  testsuite/install.00-init/050-crossshell.exp,
  testsuite/modules.00-init/015-version.exp: Release of version 4.0.0-beta
  Adapt testsuite to take new release name in account.

2017-09-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, NEWS, contrib/rpm/environment-modules.spec, doc/Makefile,
  doc/source/{diff_with_c-version.pod => diff_v3_v4.pod}: doc: rename
  diff_with_c-version to diff_v3_v4

  * .gitignore, MIGRATING.md, Makefile, contrib/rpm/environment-modules.spec:
  doc: add MIGRATING guide

2017-09-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod: doc: improve diff doc with more
  changes between 3.2 & 4

2017-09-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod: doc: rephrase diff to talk about
  Modules 3.2 and 4

  * doc/source/module.pod.in: doc: describe MODULES_USE_COMPAT_VERSION in
  module.1

  * init/bash.in, init/bash_completion.in, init/cmake.in, init/csh.in,
  init/ksh.in, init/perl.pm.in, init/profile-compat.csh.in,
  init/profile-compat.sh.in, init/python.py.in, init/ruby.rb.in, init/sh.in,
  init/zsh.in: init: rename use compat var in MODULES_USE_COMPAT_VERSION  Use
  a distinguishable prefix for environment variables relative to the Modules
  software: 'MODULES_'.

2017-09-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS: Add release notes for 4.0.0 in NEWS

2017-09-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/Makefile, init/fish_completion, init/fish_completion.in: init: fix
  and normalize fish_completion  * remove incorrect references to apt-get *
  use space instead of tabs * normalize description messages reusing short
  sentences already made for zsh completion * fix function to filter module
  command output and only return modulefile list not mixed with files *
  simplify install process by removing need for a '.in' file (and fix
  bash_completion install on the way)

2017-09-21  BEFH <fultonh1@gmail.com>

  * init/Makefile, init/fish_completion.in: fish_completion  Created an
  initial fish_completion script and added to Makefile.

2017-09-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/rpm/environment-modules.spec, ...cros.modules-tcl =>
  macros.environment-modules},
  ...les-tcl-1.923-fix-uname-nodename-when-dns.patch,
  .../modules-tcl-1.923-fix-uname-release-test.patch,
  ...ules-tcl-1.923-fix-uname-release-with-lsb.patch,
  .../modules-tcl-1.923-no-etc-rc-as-rc-file.patch,
  ...dules-tcl-1.923-skip-access-tests-if-root.patch,
  ...dules-tcl-1.923-unneeded-manpath-q-option.patch,
  contrib/rpm/modules-tcl.spec: rpm: adapt spec for 4.0.0-beta  Base new
  environment-modules.spec on Fedora specfile made by Orion Poplawski. Adapt
  content to build on either Fedora and EL systems.

  * contrib/scripts/add.modules.in, contrib/scripts/mkroot: contrib: add
  proper header for add.modules and mkroot

  * .gitignore, Makefile, contrib/scripts/add.modules.in,
  contrib/scripts/{mkroot.in => mkroot}: install: add add.modules and mkroot
  to bindir

  * contrib/scripts/add.modules.in, contrib/scripts/mkroot.in: contrib: import
  add.modules and mkroot from c branch  These scripts are usually part of a
  regular environment-modules installation

  * init/profile.sh.in: init: use . instead of source in sh-kind profile
  script

2017-09-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * www/index.html: www: update bug tracker url

2017-09-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/doc2www, www/c/INSTALL.html, www/c/NEWS.html, www/c/README.html,
  www/c/module.html, www/c/modulefile.html, www/index.html: www: update
  repository url  And be more forge neutral in footer disclaimer of all pages.

  * testsuite/install.00-init/030-options.exp: testsuite: fix test relative to
  installed contrib mods

  * .gitignore, contrib/modulefiles/module-info,
  contrib/modulefiles/modules.in, init/Makefile: install: add 'modules'
  modfile to example modfiles

  * .gitignore, .travis.yml, INSTALL-win.txt, INSTALL.txt, Makefile, NEWS,
  configure, contrib/modulefiles/module-git, doc/Makefile: Rename Modules-Tcl
  > Modules in docs and install scripts

2017-09-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * README.md: doc: speak about Modules rather Modules-Tcl in README

2017-09-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile: install: add ChangeLog-compat and NEWS-compat  Build and install
  ChangeLog and NEWS files relative to compatibility version in %docdir.

  * configure: install: fetch compat git branch in configure  If install is
  attempted from a git repository, try to get compat branch is not already
  available in local repository. Handle various cases like truncated
  repository.

  * .travis.yml: travis: fix build requirements for compat version

  * .travis.yml: travis: exclude compat branches from ci

2017-09-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/.gitignore, init/Makefile, init/profile-compat.csh.in,
  init/profile-compat.sh.in: init: add profile scripts enabling compat vers by
  default

2017-09-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile: install: add compat src to dist tarball

2017-09-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, init/.gitignore: git: fix location of ignored files

  * init/Makefile: install: remove any preexisting ksh-functions switchml  In
  case we reinstall with this time C version installation disabled.

  * init/perl.pm.in: init: normalize perl.pm hash key syntax

  * init/.gitignore, init/Makefile, init/bash.in, init/{bash_completion =>
  bash_completion.in}, init/cmake.in, init/csh.in, init/fish.in, init/ksh.in,
  init/perl.pm.in, init/python.py.in, init/ruby.rb.in, init/sh.in,
  init/zsh.in: init: adapt scripts to --enable-compat-version build  Introduce
  MODULE_USE_COMPAT_VERSION environment variable to control the activation of
  the compatibility version rather main version in case of
  --enable-compat-version installation.  The initialization script of the
  shells supporting compatibility version are adapted to define the 'module'
  command based on the modulecmd-compat binary if MODULE_USE_COMPAT_VERSION is
  set to 1. Elsewhere module is based on modulecmd.tcl.  'switchml' function
  of alias is reintroduced to switch between main and compatibility version
  based on the state of the MODULE_USE_COMPAT_VERSION environment variable.
  Acknowledgment: this development has been made and funded within the
  framework of the PRACE Fifth Implementation Phase (PRACE-5IP) project
  (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's Horizon
  2020 research and innovation programme (2014-2020) under grant agreement no.
  730913.

2017-09-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, .travis.yml, INSTALL.txt, Makefile, Makefile.inc.in,
  configure, doc/Makefile, init/Makefile, site.exp.in,
  testsuite/install.00-init/030-options.exp: install: --enable-compat-version
  to build compat vers  Introduce '--enable-compat-version' configure argument
  to configure and build compatibility (C) version in addition to main
  version.  This compatibility version is located in the 'compat' directory,
  which is automatically populated with 'c-master' git branch if we work in
  the git repository.  'configure' script is adapted to run the compatibility
  version relative configure script. Unknown command-line arguments are passed
  down to this script, which raise error if these arguments are not known
  there either. Some compatibility version configure script argument are also
  incompatible in this dual installation mode, so an error is raised
  (--enable-versioning for instance).  Build process will generate and install
  modulecmd-compat, module-compat.1 and modulefile-compat.4 from this
  compatibility version. 'compat' suffix enables clear distinction with main
  version files.  Acknowledgment: this development has been made and funded
  within the framework of the PRACE Fifth Implementation Phase (PRACE-5IP)
  project (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's
  Horizon 2020 research and innovation programme (2014-2020) under grant
  agreement no. 730913.

2017-09-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * INSTALL.txt, Makefile.inc.in, configure, contrib/rpm/modules-tcl.spec,
  init/Makefile, init/bash.in, init/csh.in, init/ksh.in, init/sh.in,
  init/zsh.in: install: remove features linking to external C version  Remove
  the --enable-set-switchml, --enable-use-cver-dotmodulespath,
  --with-cver-initdir, --with-cver-bindir and --with-cver-mandir configure
  option that previously enabled to link Modules-Tcl installation to an
  external Modules-C installation.  This change is an initial step toward a
  bundled installation of Tcl/C versions, so the external linking support will
  transform into a dual flavor installation.

2017-09-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash.in, init/csh.in, init/fish.in, init/ksh.in, init/sh.in,
  init/zsh.in: init: module source @initdir@/modulerc rather shell source
  Like for other lang init scripts.

2017-09-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.80-deep/022-switch.exp: No swap-on if swap-off failed
  During a 'switch' command, if the unloading part fails the loading part will
  not be tried.  Unloading part fails if module to unload does not exist or
  its unload interpretation raise error. If module to unload exist and is not
  loaded, unload is considered successful.

  * modulecmd.tcl.in: Debug on 'nothing to do' cond of load/unload  Add a
  debug message when load command has nothing because module to load is
  already loaded. Add a debug message when unload command has nothing to do
  because module unload exists but is not loaded.

2017-09-03  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles/module/bad,
  testsuite/modulefiles/module/err, testsuite/modulefiles/module/lbad,
  testsuite/modulefiles/module/lerr, testsuite/modulefiles/module/lunk,
  testsuite/modulefiles/module/unk, testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.70-maint/140-multiargs.exp,
  testsuite/modules.90-avail/070-full.exp: Failed load/unload if submod
  load/unload fails  When a modulefile loads or unloads another modulefile,
  load or unload issue did not previously led to upper module load or unload
  failure. As a result, the upper modulefile appeared loaded or unloaded
  whereas its dependent sub-modulefile were not loaded or respectively still
  loaded.  This commit makes cmdModuleLoad and cmdModuleUnload procedure
  return an exit code to let know if load or unload action performed
  correctly. In case of a 'module load' or 'module unload' call within a
  modulefile, the module procedure will raise an error with the dummy message
  'SUB_FAILED'. This message is caught at the result of the modulefile
  interpretation to return an error code, without raising error count or
  message as it has already been handled at the root of the issue.

  * modulecmd.tcl.in: Fix popSettings stack handling  popSettings were
  cleaning 2 levels of stack instead of 1, resulting in bad environment
  restore when issue occurred in a nested modulefile interpretation.

  * testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.70-maint/090-source.exp: testsuite: add tests for unknown
  or broken mod  Add tests to check behavior for commands performing
  modulefile interpretation when modulefile is unknown or has broken Tcl code
  inside.

2017-09-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp,
  testsuite/modules.50-cmds/302-interp-cascaded.exp: Only one sep line between
  2 mods on display/help/test  Print only one separator line (---) between the
  interpretation of 2 modules on the display, help and test commands to
  improve readability of the results displayed.  To do so, cmdModuleDisplay
  and cmdModuleTest procedures have been adapted to receive the full list of
  modules to work on, like it was already done on cmdModuleHelp.  Adapt
  non-regression tests output to this change.

  * modulecmd.tcl.in, testsuite/modulefiles/bad2/body,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.70-maint/140-multiargs.exp,
  testsuite/modules.80-deep/021-unload.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/070-full.exp: Do not exit if internal error
  occurs in interp mod  Previously an internal error occurring during the
  interpretation of a modulefile (like broken Tcl code) was leading to an
  immediate exit of the whole module execution. So the end of the ongoing
  command was skipped (like printing separator line '---' on display command
  or interpreting next modulefile passed argument on load command).  With this
  change, an internal error occurring during the interpretation of a
  modulefile will be treated as any other error raised by modulefile Tcl
  commands (like prereq, conflict, append-path, etc). Interpretation will be
  considered as failed but ongoing command will get this failed status and
  will continue.  As a result, when this kind of error occurs now display,
  help, load, unload, whatis and source commands will end treatment of the
  failed modulefile and then proceed with the following modulefiles passed as
  arguments.  Add 140-multiargs non-regression tests in 70-maint suite to
  check behavior of module commands running with multiple modulefiles passed
  as argument.

2017-08-31  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.10-use/080-access.exp,
  testsuite/modules.10-use/090-bad.exp,
  testsuite/modules.20-locate/010-init_ts.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/065-rcerrs.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.20-locate/081-access-rc.exp,
  testsuite/modules.20-locate/095-cleanup.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.70-maint/100-path.exp,
  testsuite/modules.80-deep/021-unload.exp,
  testsuite/modules.80-deep/022-switch.exp,
  testsuite/modules.80-deep/080-access.exp: Print more readable messages on
  reportInternalBug  Improve readability of error messages encountered during
  modulefile execution by putting Tcl error message first after the 'Module
  ERROR' prefix.  To achieve this improvement, modulefile is passed to
  reportInternalBug procedure as a separate argument. Procedures getting and
  manipulating error information have been adapted to add modulefile as an
  element of the error information to be able to transmit it to
  reportInternalBug.  In addition, this commit change error reporting kind
  when facing access error on readModuleContent. Previously access issues were
  reported with reportInternalBug whereas these issues were not relative to
  modulefile content. reportError is now used to report access issue as when
  this kind of error is encountered when checking file is valid modulefile.
  Adapt relative non-regression tests and take opportunity to centralize
  common error messages at start of the testsuite.

2017-08-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, doc/Makefile, init/Makefile: install: avoid make to rebuild
  Makefile.inc

2017-08-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Add getModuleNameFromModulepath helper proc

  * modulecmd.tcl.in: Add getModulepathFromModuleName helper proc

  * modulecmd.tcl.in, testsuite/modules.70-maint/130-aliases.exp: Add blank
  line between displayed list of elements  When reporting results per category
  or modulepaths like during an 'avail' or 'whatis' command, add a blank line
  between categories or modulepaths to get a clearer separation between them.
  With this change, behavior is align with C-version and standard tools like
  'ls'.

  * modulecmd.tcl.in, testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.90-avail/060-empty.exp: No table header display if no
  avail result  Do not print the table header line in --long mode on an
  'avail' command if no result are returned.  Take opportunity of this change
  to introduce the displayTableHeader procedure in order to get an homogeneous
  code to produce such kind of header in the various command procedures
  requiring it.

2017-08-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/modulefile.pod, modulecmd.tcl.in,
  testsuite/modulefiles/.hidden/1.0, testsuite/modulefiles/loc_rc8/.2.0,
  testsuite/modulefiles/loc_rc8/.modulerc,
  testsuite/modulefiles/loc_rc8/.subdir/4.0,
  testsuite/modulefiles/loc_rc8/1.0, testsuite/modulefiles/loc_rc9/.1.0,
  testsuite/modules.20-locate/067-hidden.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.90-avail/070-full.exp: Add support for hidden 'dot'
  modulefiles  Modulefiles with part of their name starting with a '.' dot
  character are considered as hidden modulefiles, like dot files on Unix-kind
  filesystems. After introduction of the getModules/findModules procedures
  hidden modulefiles where automatically discarded. So this commit
  re-introduce the support to locate these dot modulefiles.  Add a
  'fetch_hidden' argument to the findModules procedure to enable an extra
  lookup on walked directories to gather the dot modulefiles. The getModules
  procedures now looks at the passed mod and if named module correspond to a
  dot modulefile findModules 'fetch_hidden' argument is turned on. Since
  getPathToModule call to getModules for broad search (with just passed mod
  root name), this procedure also makes the 'is hidden module' test to order
  getModules to do the hidden search.  A hidden modulefile does not appear in
  case of wild search, it is only returned when search is about its exact
  name. When a symbolic version targets a hidden modulefile, this modulefile
  will also be returned in case search is about symbol exact name. A module
  alias targeting a hidden modulefile is returned as any other aliases.  Add
  067-hidden non-regression tests in 20-locate suite.

2017-08-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Look for alias/sym tgt in all path on cmdModuleSearch
  Introduce a second search round in cmdModuleSearch to solve module alias or
  symbolic version that were not solved by looking at modules in the
  modulepath where they have been defined.  During initial search round across
  modulepaths, these aliases or symbols which return an 'Unable to locate'
  issue from getPathToModule are stored in an extra_search array which gathers
  all elements to look at during the extra search round.  Extra search round
  will attempt to solve these aliases or symbol in all defined modulepaths,
  except the path already looked at.  Due to this second search round, results
  are not processed immediately for each modulepath but once when all location
  searches are finished. So user will get one full output rather progressive
  results modulepath after modulepath. This behavior change in outputing
  results is required as an alias or symbol solved globally may alter the
  result list of a modulepath already processed. So when these kind of alias
  or symbol are searched, their target modulefile will be appended to the list
  of files to interpret of the modulepath they are coming from.  To optimize
  alias/symbol resolution process the 'full_list' array is introduced to store
  all the module names added to each modulepath arrays, so before asking
  getPathToModule for resoltution, look if defined target has not already been
  found and saved in 'full_list'.

2017-08-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Look for alias/sym tgt in all path on cmdModulePaths
  Resolve alias or symbolic version by looking in all modulepaths, rather just
  current modulepath, in order to match alias or symbol targeting a module in
  a different modulepath.  Resolution is made first in current modulepath
  directory, if not solved there the other modulepaths will be looked at
  following their precedence order.  Previously only alias and symbolic
  version targeting module in same modulepath were found.

  * doc/source/modulefile.pod, modulecmd.tcl.in: Handle alias/sym pt. to
  another path in getPathToModule  When searching for a module in a given
  modulepath directory, if a module alias or a symbolic version matches
  searched module but the target of this alias or symbol is not found in
  current modulepath directory, search for this target restarting search from
  the first modulepath in list to ensure modulepath priority.  Previously this
  kind of alias or symbol targeting a module in a different modulepath were
  only found if this path was set after the modulepath where the alias or
  symbol is defined.  Clarify alias and symbolic version modulepath resolution
  steps in modulefile man page.

2017-08-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/etc/modulerc.cross, testsuite/modulefiles.path1/cross/.modulerc,
  testsuite/modulefiles.path1/cross/3.0,
  testsuite/modulefiles.path1/cross/4.0,
  testsuite/modulefiles.path1/dcross/.modulerc,
  testsuite/modulefiles.path1/dcross/4.0,
  testsuite/modulefiles.path1/dcross/dir1/1.0,
  testsuite/modulefiles.path1/lcross/1, testsuite/modulefiles.path1/lcross/10,
  testsuite/modulefiles.path1/lcross/6,
  testsuite/modulefiles.path1/othcross/.modulerc,
  testsuite/modulefiles.path1/othcross/1.0,
  testsuite/modulefiles.path2/cross/.modulerc,
  testsuite/modulefiles.path2/cross/1.0,
  testsuite/modulefiles.path2/cross/6.0,
  testsuite/modulefiles.path2/dcross/dir1/.modulerc,
  testsuite/modulefiles.path2/dcross/dir1/2.0,
  testsuite/modulefiles.path2/dcross/dir2/1.0,
  testsuite/modulefiles.path2/lcross/11, testsuite/modulefiles.path2/lcross/2,
  testsuite/modulefiles.path2/lcross/4, testsuite/modulefiles.path2/lcross/5,
  testsuite/modulefiles.path2/lcross/7,
  testsuite/modulefiles.path3/cross/.modulerc,
  testsuite/modulefiles.path3/cross/2.0,
  testsuite/modulefiles.path3/cross/5.0,
  testsuite/modulefiles.path3/dcross/.modulerc,
  testsuite/modulefiles.path3/dcross/5.0,
  testsuite/modulefiles.path3/dcross/dir1/3.0,
  testsuite/modulefiles.path3/dcross/dir3/1.0,
  testsuite/modulefiles.path3/lcross/12, testsuite/modulefiles.path3/lcross/3,
  testsuite/modulefiles.path3/lcross/8,
  testsuite/modulefiles.path3/othcross/.modulerc,
  testsuite/modulefiles.path3/othcross/2.0,
  testsuite/modules.20-locate/069-cross.exp: testsuite: add tests for mods
  spread across paths  Add location tests for module, aliases and symbolic
  versions whose definition are spread across multiple modulepaths.

  * testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.80-deep/068-transitive.exp: testsuite: add unload tests
  mentioning sym or alias

2017-08-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/install.00-init/030-options.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/035-defname.exp,
  testsuite/modules.20-locate/038-defcontext.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.80-deep/068-transitive.exp,
  testsuite/modules.80-deep/080-access.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.91-sort/020-avail.exp: Parsable modulepath header when
  -l/-t enabled  Do not ship modulepath header in a separator line in terse or
  long output on module avail command. With this change, behavior is aligned
  with C-version.

  * modulecmd.tcl.in, testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp: Make -l/-t switches mutually
  exclusive  Last switch mentionned on command-line is honored

  * modulecmd.tcl.in: Remove useless g_loadedModulesGeneric structure
  Registering the loaded module name in the g_loadedModulesGeneric global
  array to look for loaded module information is now useless following the
  addition of the getLoadedWithClosestName and getLoadedMatchingName
  mechanisms.

  * modulecmd.tcl.in, testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.80-deep/022-switch.exp: Enable getPathToModule to return
  closest loaded mod  If 'look_loaded' argument of getPathToModule procedure
  is set to 'match' look at matching loaded modules to get result (unload
  behavior). Enable to return the closest loaded modules (not module expressed
  in mod but sharing at least the same root name) by setting look_loaded
  argument to 'close'.  With this change, cmdModuleUnload is adapted to call
  getPathToModule in 'match' look_loaded mode most of the time, but in case of
  'module switch' with a single argument, cmdModuleUnload will call
  getPathToModule in 'close' look_loaded mode.  As a consequence,
  cmdModuleSwitch does not need anymore to work on module resolution and rely
  entirely on cmdModuleLoad and cmdModuleUnload which in turn rely on
  getPathToModule.  Add complementary tests in 50-cmds/170-swap and
  80-deep/022-switch to ensure closest loaded module is not returned in case
  of 'switch old new' command (not 'switch new').

  * modulecmd.tcl.in, testsuite/modules.50-cmds/180-unload.exp,
  testsuite/modules.80-deep/021-unload.exp: Unload deep mod with just root
  name passed as arg  Enable to unload 'mod/dir/subdir/vers' when unload of
  'mod' or 'mod/dir' asked. Was previously working only if deep module to
  unload was also the default version for these root names.  Introduce
  getLoadedMatchingName procedure to check passed name is equal to or is a
  subpart of a loaded module. This new procedure is then used in
  getPathToModule when look_loaded is enabled (so when unloading module).  Add
  021-unload tests in 80-deep suite to check unload of deep modules using sub
  names. Add also new tests in 180-unload of 50-cmds suite to check behavior
  when multiple loaded modules match searched name.

  * modulecmd.tcl.in, testsuite/modulefiles.deep/plain/dir1/1.0,
  testsuite/modulefiles.deep/plain/dir1/2.0,
  testsuite/modulefiles.deep/plain/dir2/1.0,
  testsuite/modulefiles.deep/plain/dir2/2.0,
  testsuite/modules.80-deep/022-switch.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/080-access.exp: Fix getLoadedWithClosestName
  search  Algorithm were matching middle or end part of module even if no
  match on root element.  Add 022-switch tests in 80-deep to test
  getLoadedWithClosestName on deep module names.

2017-08-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modules.50-cmds/180-unload.exp: Remove dummy
  code on cmdModuleUnload  Clean code in cmdModuleUnload procedure that were
  used as fallback treatment in case a module loaded were not found by
  getPathToModule (relative modulepath unconfigured?).  Nowadays
  getPathToModule procedure also look at the loaded module information and
  return in case of an 'unload' action registered loaded modulefile, whatever
  configured modulepath.  Take this opportunity to add 180-unload tests in
  50-cmds suite to check unload behavior with different name condition and
  when the modulepath relative to the loaded module to unload is not set
  anymore.

  * modulecmd.tcl.in, testsuite/modulefiles/loc_dv1/1.0,
  testsuite/modulefiles/loc_dv1/2.0, testsuite/modulefiles/loc_dv2/2.0,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/038-defcontext.exp: Locate module using loaded
  context only on 'unload'  When searching for a modulefile corresponding to a
  given name, the getPathToModule procedure was previously looking by default
  at the list of loaded modulefiles to find a match. This behavior lead to
  different result depending on the loaded environment context for all module
  commands relying on modulefile location.  For instance, if 'mod' had 2
  versions '1' and '2', the latter being default version, if 'mod/1' were
  loaded it was this version that were answered when asking for 'mod'.  This
  commit restore a predictable and idempotent behavior where the loaded
  modules context is only use when working on this loaded context. Same
  behavior than C-version is now encountered.  As a result, only the 'unload'
  command now looks at loaded modules to find location of modules passed as
  argument. Load, display and help commands do not look anymore at loaded
  modules to locate their module arguments.  Non-regression tests
  038-defcontext in 20-locate have been introduced to ensure correct behavior
  will persist over time.

2017-08-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles/loc_sym/version23,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.90-avail/070-full.exp: Do not alter resolution path when
  spreading sym  When spreading symbol along resolution path, do not update
  this resolution path. Exception made when overwriting a pre-existing symbol
  (used for instance in case default version set in .version file superseeds a
  default an already set via .modulerc file)  Protected resolution path helps
  to spread symbol all along the path without missing intermediate resolution.

  * testsuite/modulefiles.deep/modtr/.modulerc,
  testsuite/modulefiles.deep/trmod/.modulerc,
  testsuite/modulefiles/loc_sym/version22,
  testsuite/modulefiles/loc_tr/.modulerc,
  testsuite/modulefiles/tr2_loc/.modulerc,
  testsuite/modulefiles/tr_loc/.modulerc,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.80-deep/068-transitive.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: check 'default' symbol
  spread  Add non-regression tests in 20-locate/045-symvers,
  20-locate/068-transitive and 80-deep/068-transitive to ensure that 'default'
  symbol has same spreading properties than other symbols.

  * modulecmd.tcl.in, testsuite/modulefiles/loc_sym/version21,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.90-avail/070-full.exp: Fix symbol spread when set on alias
  before their def  Propagate symbols set on aliases before the definition of
  these aliases. Previously, a symbol set on a not-yet-defined alias were lost
  and not applied to the alias target once set.  With this change setting a
  symbol on an alias gives same result either this symbol is set before or
  after the alias definition.

2017-08-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Remove 'default_is_special' from getModuleNameVersion
  New "default" treatment in setModuleResolution procedure permits to remove
  the 'default_is_special' hack from getModuleNameVersion procedure. One
  exception still needed for the 'module-info symbols' command, which may be
  called for 'modname/default' with no default symbol necessary registered but
  symbols set on bare module name.

  * modulecmd.tcl.in, testsuite/modulefiles/loc_sym/version17,
  testsuite/modulefiles/loc_sym/version18,
  testsuite/modulefiles/loc_sym/version19,
  testsuite/modulefiles/loc_sym/version20,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.80-deep/068-transitive.exp,
  testsuite/modules.90-avail/070-full.exp: Register step-by-step resolution
  path  Register a step-by-step resolution path with help of g_resolvedPath
  array in order to be able propagating symbols all along this resolution
  path. Previously intermediate steps were skipped during symbol spread
  leading to different results depending on module-version statement order.
  Add tests in 045-symvers of 20-locate suite to check new behavior. Also
  correct tests in 068-transitive of 20-locate and 80-deep suites.

2017-08-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in, testsuite/modulefiles/loc_dv2/1.0,
  testsuite/modulefiles/loc_dv7/2.0/1.0, testsuite/modulefiles/loc_dv9/1.0,
  testsuite/modulefiles/loc_sym/alias7,
  testsuite/modulefiles/loc_sym/version15,
  testsuite/modulefiles/loc_sym/version16,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/031-defvers2.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp: Resolve 'mod/default' when
  'default' symbol set  Resolve the 'default' symbolic version as any other
  symbolic version when passed as module name on commands performing module
  resolution like load, display, help and test.  Previously 'default' symbolic
  version used in module name was only found on search-like commands like
  avail, whatis and paths.  With this change same behavior than C-version is
  achieve.  setModuleResolution procedure has been reworked to register
  resolution and symbols on 'modulename/default' in addition to just
  'modulename'. So resolution or symbol querying now find a match on
  'modulename/default'.  Introduce 031-defvers2 non-regression tests in
  20-locate suite to test usage of 'default' symbol in module name passed on
  command-line. Also add tests in 040-alias and 045-symvers of 20-locate suite
  to check module-alias and module-version behavior when targeting default
  module.

2017-08-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl.in: Avoid empty-string on unload when running Tcl8.4

  * .gitignore, Makefile, contrib/nglfar2ccov, doc/Makefile, modulecmd.tcl =>
  modulecmd.tcl.in: More standard shebang for modulecmd.tcl  Make use of
  './configure' information to set a precise tclsh shebang on modulecmd.tcl
  script. This change requires to move modulecmd.tcl to modulecmd.tcl.in
  within repository.  Shebang is set to '@TCLSHDIR@/tclsh' rather just
  '@TCLSH@' in modulecmd.tcl.in to help forge code determines that this file
  is a Tcl script.

  * testsuite/modules.20-locate/080-access.exp: testsuite: check access on
  symlink module  Add non-regression tests in 080-access of 20-locate suite to
  control behavior of filesystem symlink module when symlink target directory
  or its content has a restricted accessed.

  * modulecmd.tcl: Skip module-version registration if invalid modname

2017-08-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles.deep/modtr/.modulerc,
  testsuite/modulefiles.deep/modtr/dir4/.modulerc,
  testsuite/modulefiles.deep/tr2mod/.modulerc,
  testsuite/modulefiles.deep/tr2mod/dir3/.modulerc,
  testsuite/modulefiles.deep/trmod/.modulerc,
  testsuite/modulefiles.deep/trmod/dir3/.modulerc,
  testsuite/modulefiles/tr2_loc/.modulerc,
  testsuite/modulefiles/tr_loc/.modulerc,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.80-deep/068-transitive.exp,
  testsuite/modules.90-avail/070-full.exp: Include all kind of symvers target
  in getModules res  When parsing symbolic version targets in getModules
  procedures, these targets were previously included in search result only if
  they were found on the filesystem (file or directory). But sometimes, these
  targets may be module alias and not a consistent file or directory.  This
  situation happens when a module-version is set on an alias which in turns
  targets a modulefile in a different directory. When you query the symbolic
  version in the end-point modulefile directory, you get the modulefile as a
  result, but if you query the symbol in the alias directory, this alias will
  be returned.  Adapt non-regression tests in 060-rc of 20-locate suite and in
  068-transitive of 80-deep suite. Improve especially the 068-transitive tests
  with aliases and symbols set from different module.

  * .gitignore: git: ignore vim swap files

2017-08-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles.deep/modtr/.modulerc,
  testsuite/modulefiles.deep/modtr/3.0,
  testsuite/modulefiles.deep/modtr/dir1/1.0,
  testsuite/modulefiles.deep/modtr/dir2/2.0,
  testsuite/modulefiles.deep/modtr/dir3/.modulerc,
  testsuite/modulefiles.deep/modtr/dir4/.modulerc,
  testsuite/modulefiles.deep/modtr/dir4/mod4.0,
  .../modulefiles.deep/modtr/dir5/subdir/mod5.0,
  testsuite/modulefiles/loc_tr/.modulerc, testsuite/modulefiles/loc_tr/1.0,
  testsuite/modulefiles/loc_tr/2.0, testsuite/modulefiles/loc_tr/3.0,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/068-transitive.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.80-deep/068-transitive.exp,
  testsuite/modules.90-avail/070-full.exp: Let setModuleResolution handle
  g_moduleVersion  Register all symbolic module version in g_moduleVersion
  array by letting setModuleResolution procedure handle this array. So now
  module-version procedure deleguates g_moduleVersion handling to
  setModuleResolution.  With this change all symbols are now registered in
  g_moduleVersion which enables to search on these names during an 'avail'
  command. It was previously possible to match these symbols only if they were
  explicitely defined on a 'module-version' statement and were not about the
  'default' symbol. Symbols inherited by transitivity are now also registered
  in g_moduleVersion and resolution structure by recursive call to
  setModuleResolution procedure.  setModuleResolution procedure has also been
  adapted to withdraw its 'override_default' argument. When called,
  setModuleResolution will now always override an already defined symbolic
  version, but 'module-version' procedure will refrain from calling
  setModuleResolution if this symbol is already set in g_moduleVersion.
  Introduce non-regression tests 068-transitive in 20-locate and 80-deep
  suites and add new tests in 060-rc in 20-locate suite to check transitive
  definitions in various conditions.

2017-08-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/symlink, testsuite/modulefiles/symlink2,
  testsuite/modulefiles/symlink3, testsuite/modules.20-locate/075-symlink.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: check behavior with fs
  symlink  Add 075-symlink non-regression tests in 20-locate suite to validate
  behavior when module is a filesystem symlink.  Adapt tests in
  70-maint/130-aliases, 90-avail/040-wild and 90-avail/070-full for the
  addition of the 'symlink*' modules.

  * testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp: testsuite: add prepend tests
  for leading colon case  Add a load test in 050-prepend and an unload test in
  055-prepend-undo of 50-cmds suite to validate behavior when a PATH-like
  variable is initially set when a prefixing colon. Load should treat it as an
  empty path element. Unload restore this prefixing colon.

2017-08-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, Makefile.in => Makefile, Makefile.inc.in, configure,
  doc/{Makefile.in => Makefile}, init/.gitignore, init/{Makefile.in =>
  Makefile}: install: fix Makefile generation flaws  Generate a shared
  'Makefile.inc' file rather all 'Makefile's at configure time. Avoid
  init/Makefile being rebuilt by initscript '%.in' rules.  Correct 'all' rule
  typo in doc/Makefile.  Enforce '.modulespath' symlink creation when
  usecverdotmodulespath is enabled.

  * doc/source/diff_with_c-version.pod, doc/source/module.pod.in,
  doc/source/modulefile.pod, init/.gitignore, init/Makefile.in, init/r.R.in,
  modulecmd.tcl, testsuite/modulefiles/info/shellsexp,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Support for R "shell"  And
  adapt documentation, installation and testsuite.

2015-11-21  Roy Storey <roy.storey@plantandfood.co.nz>

  * init/r.R.in: init: script for R support

2017-08-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/rpm/modules-tcl.spec, doc/source/diff_with_c-version.pod,
  doc/source/module.pod.in, doc/source/modulefile.pod, init/.gitignore,
  init/Makefile.in, init/ruby.rb.in, modulecmd.tcl,
  testsuite/modulefiles/info/shellsexp,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Support for Ruby "shell"  And
  adapt documentation, installation and testsuite.

2011-10-17  Tammo Tjarks <tammo@tammo-tjarks.de>

  * init/ruby.rb.in: init: script for Ruby support

2017-08-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.pod.in, init/.gitignore, init/Makefile.in, init/{perl.in
  => perl.pm.in}, init/{python.in => python.py.in}: Use file extension for
  perl/python init script  Rename 'perl' in 'perl.pm' and 'python' into
  'python.py' to get same init script filename than C-version.

  * modulecmd.tcl, testsuite/modules.00-init/006-procs.exp: Properly set
  preliminary code for x-res stuff

2017-08-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.20-locate/030-defvers.exp: Ignore extra
  '/' on module name for loc

  * doc/source/diff_with_c-version.pod, doc/source/module.pod.in,
  doc/source/modulefile.pod, init/.gitignore, init/Makefile.in, init/cmake.in,
  modulecmd.tcl, testsuite/modulefiles/info/shellsexp,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Support for CMake "shell"  And
  adapt documentation, installation and testsuite.

  * modulecmd.tcl, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/090-uname-proc.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/099-uname-cleanup.exp,
  testsuite/modules.50-cmds/250-x-resource.exp: Improve check and run of
  external command  Add 'getCommandPath' procedure to find path of command and
  cache this location using 'auto_execok' Tcl command.  Add 'runCommand'
  procedure to get command location from getCommandPath then execute command
  if found. An error is raised if not found.  Plug 'uname' and 'x-resource'
  procedures on these new mechanisms to handle their external command run.
  Especially 'x-resource' now checks if X11 environment is editable by running
  'xrdb -query'. If this command produces error, then X11 resources cannot be
  edited and x-resource procedure will raise an error.  Adapt non-regression
  tests 09x-uname and 250-x-resource of 50-cmds suite consequently.

2017-08-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/rpm/modules-tcl.spec: rpm: adapt environment-modules provides to
  distrib

2017-08-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml: travis: add test variants for openSUSE

  * .travis.yml, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/250-x-resource.exp: testsuite: fix xres orders
  production  Use same mechanism than in modulecmd.tcl to get exact same
  ordering of x-resource directives to test results.  Enable use of a virtual
  display server on CentOS test environment with Xvfb to test behavior of
  x-resource on this distribution.  Thanks to Gabe Turner for reporting the
  issues on the x-resource test that were due to the rewrite of the
  non-regression testsuite.

  * ...ules-tcl-1.923-fix-uname-release-with-lsb.patch,
  contrib/rpm/modules-tcl.spec: rpm: fix %license use on el6 and bad patch4
  %license macro does not exist on el6 environment and cannot be set as
  attempted as we need a %files-macro. So use %doc instead of %license on el6
  and below.  Also fix patch #4 were testsuite update was previously missing
  to fix the uname/release issue when an /etc/lsb-release file exists.  Thanks
  to Gabe Turner for reporting this issue

2017-08-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile.in, modulecmd.tcl: Add 'testsyntax' makefile rule  Adapt by the
  way some code lines that were too long (>78).

  * modulecmd.tcl: Always mention channelid on 'puts' statement

  * modulecmd.tcl: Harmonize and optimize write of 'switch' statement

  * modulecmd.tcl, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Fix some typos on shell code
  rendering

  * modulecmd.tcl, testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp: Raise and render error once
  on unload  During an 'unload' action, an error occuring on a loaded module
  will not affect the unload of the other modules passed on the command line.
  This commit remove the additional error message that were displayed in this
  situation: only the message raised from the modulefile interpretation is
  useful. Also only render error once, so 'renderError' procedure will do
  nothing if it has already been called.

2017-08-03  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/015-version.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.50-cmds/282-info-command.exp,
  testsuite/modules.50-cmds/283-info-command-exp.exp,
  testsuite/modules.91-sort/030-whatis.exp: testsuite: harden tests using '.*'
  regexp

  * testsuite/modulefiles/dirmodalias/1.0,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/015-version.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/032-prepend.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/020-fqual.exp,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/035-defname.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/055-locrcerrs.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/260-getenv.exp,
  testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.50-cmds/282-info-command.exp,
  testsuite/modules.50-cmds/283-info-command-exp.exp,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp,
  testsuite/modules.50-cmds/302-interp-cascaded.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.70-maint/120-autoinit.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/050-whatis.exp,
  testsuite/modules.80-deep/080-access.exp,
  testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/060-empty.exp,
  testsuite/modules.91-sort/020-avail.exp,
  testsuite/modules.91-sort/030-whatis.exp: testsuite: imply ^$ for match str
  on re-enabled tests  Automatically prefix matching string with '^' and
  suffix it with '$' in case of regexp-enabled non-regression tests.  Adapt
  all regexp-enabled tests requiring it for this change.

  * .../modules-tcl-1.923-fix-uname-nodename-when-dns.patch,
  contrib/rpm/modules-tcl.spec, modulecmd.tcl: Use 'uname -n' for 'uname
  nodename'  To avoid involment of DNS resolution base the result of the
  'uname nodename' modulefile command on 'uname -n' system command rather on
  '[info hostname]'.  With this fix same behavior than C-version is achieved
  for 'uname nodename'.

2017-08-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/032-prepend.exp,
  testsuite/modules.10-use/040-load.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.10-use/080-access.exp,
  testsuite/modules.10-use/090-bad.exp,
  testsuite/modules.20-locate/010-init_ts.exp,
  testsuite/modules.20-locate/035-defname.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.20-locate/095-cleanup.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/028-setenv-refcount.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  .../modules.50-cmds/038-unsetenv-refcount.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/078-refresh.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/081-info-user.exp,
  testsuite/modules.50-cmds/082-info-user-exp.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/089-info-type.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/100-loglevel.exp,
  testsuite/modules.50-cmds/101-badfac.exp,
  testsuite/modules.50-cmds/105-trace.exp,
  testsuite/modules.50-cmds/110-verbose.exp,
  testsuite/modules.50-cmds/115-verbose-msg.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/172-swap-app-delim.exp,
  testsuite/modules.50-cmds/173-swap-app-delim.exp,
  testsuite/modules.50-cmds/175-swap2.exp,
  testsuite/modules.50-cmds/177-swap-prep-delim.exp,
  testsuite/modules.50-cmds/178-swap-prep-delim.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/195-load-recurs.exp,
  testsuite/modules.50-cmds/197-load-lots.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/240-chdir.exp,
  testsuite/modules.50-cmds/250-x-resource.exp,
  testsuite/modules.50-cmds/260-getenv.exp,
  testsuite/modules.50-cmds/280-info-specified.exp,
  testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp,
  testsuite/modules.50-cmds/302-interp-cascaded.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.70-maint/090-source.exp,
  testsuite/modules.70-maint/100-path.exp,
  testsuite/modules.70-maint/110-paths.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/080-access.exp,
  testsuite/modules.91-sort/040-load.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp: testsuite: refactor tests with
  code output  Adapt test*out* procedures to call for 'shell_out' procedure if
  passed code output is a code order list rather than an output string.
  'shell_out' procedure in turn calls for specific procedure to parse shell
  commands and transform them in the appropriate shell code. This way shell
  code is handled in a central location and tests do not need anymore to
  handle the particularity of each supported shells.

2017-07-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.50-cmds/282-info-command.exp,
  testsuite/modules.50-cmds/283-info-command-exp.exp,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/050-saverm.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.80-deep/050-whatis.exp,
  testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/060-empty.exp,
  testsuite/modules.91-sort/020-avail.exp,
  testsuite/modules.91-sort/030-whatis.exp: testsuite: rely more on global
  definitions

  * testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/070-command.exp,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/032-prepend.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/250-x-resource.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/050-saverm.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.70-maint/100-path.exp,
  testsuite/modules.70-maint/110-paths.exp: testsuite: refactor ALL shell
  tests  Adapt test* procedure to call test for each supported shell when
  test_shell argument is set to 'ALL'.  Transform all tests set for all shells
  with a common output to use this new 'ALL' test_shell argument.

2017-07-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Rework python and perl shell code for error or nop  No
  output of 'import os' for Python shell when there is only an error message
  to render.  No double output of '1;' for Perl shell for a no-operation
  situation.

  * testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/070-command.exp,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.10-use/080-access.exp,
  testsuite/modules.10-use/090-bad.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.20-locate/081-access-rc.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/250-x-resource.exp,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.60-initx/005-init.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/030-switch.exp,
  testsuite/modules.60-initx/040-prepend.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp,
  testsuite/modules.60-initx/080-access.exp,
  testsuite/modules.60-initx/095-cleanup.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/050-saverm.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.70-maint/090-source.exp,
  testsuite/modules.70-maint/100-path.exp,
  testsuite/modules.70-maint/110-paths.exp,
  testsuite/modules.80-deep/080-access.exp: testsuite: refactor shell OK and
  ERR code  Pass 'OK' or 'ERR' string to test procedure, then these procedures
  will use the new internal 'shell_ok' and 'shell_err' procedures to translate
  these bare OK/ERR strings in the appropriate code for the given shell.

2017-08-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * ...dules-tcl-1.923-fix-uname-release-with-lsb.patch,
  contrib/rpm/modules-tcl.spec, modulecmd.tcl,
  testsuite/modules.50-cmds/090-uname-proc.exp: Always use
  tcl_platform(osVersion) as 'uname release'  When querying 'uname release'
  always use value of the 'osVersion' field of 'tcl_platform' array to get the
  real 'uname --kernel-release' value.  Remove specific behavior when
  /etc/lsb-release file is found as it was too specific and led to different
  behavior depending of the Linux distribution.

2017-07-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .../modules-tcl-1.923-fix-uname-release-test.patch,
  .../modules-tcl-1.923-no-etc-rc-as-rc-file.patch,
  ...dules-tcl-1.923-skip-access-tests-if-root.patch,
  ...dules-tcl-1.923-unneeded-manpath-q-option.patch,
  contrib/rpm/modules-tcl.spec: rpm: fix spec and patches for 1.923-2 build

  * .travis.yml: travis: add test variants for CentOS

  * modulecmd.tcl: Never take /etc/rc as a module rc file

  * init/csh.in: init: remove unneeded manpath '-q' option for csh

  * testsuite/modules.10-use/080-access.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.20-locate/081-access-rc.exp,
  testsuite/modules.60-initx/080-access.exp,
  testsuite/modules.61-coll/080-access.exp,
  testsuite/modules.80-deep/080-access.exp: testsuite: skip access tests if
  run by root

2017-07-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, doc/source/modulefile.pod,
  testsuite/modules.50-cmds/076-alias-sub.exp: doc: clarify 'set-alias'
  command

  * modulecmd.tcl, testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp: No alias handling for 'tcl'
  shell  Remove code that were handling aliases for the 'tcl' shell. Aliases
  are only effective for 'real' shells not script programming language shells.

2017-07-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, modulecmd.tcl,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp: Keep 'module load' lines after
  init{rm,clear}  Instead of removing the whole line when no more module
  specified on it during an 'initrm' command or during an 'initclear', keep
  the line with 'module load' to be able to reuse this line on next 'initadd'
  command.  Adapt non-regression tests in 050-rm and 060-2nd of 60-initx suite
  and diff doc.

  * doc/source/diff_with_c-version.pod, modulecmd.tcl,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.70-maint/060-apropos.exp: Warning rather error on
  C-version specific switches  Report an 'unsupported option' warning message
  when C-version specific command-line switches are passed rather than
  producing an 'invalid option' error.  Adapt non-regression tests of
  00-init/090-switches and 70-maint/060-apropos and diff doc.

2017-07-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, modulecmd.tcl,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/043-listno.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/048-listlongno.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/080-help.exp: Relax constraint on cmd line args
  position  Look the full argument list to find options or command switches,
  so options may be passed after the command name and command switches may be
  found before the command name. With this behavior commad-line argument
  position constraint is aligned with C-version.  Adapt non-regression tests
  in 70-maint suite and diff doc.

2017-07-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/rpm/modules-tcl.spec, testsuite/modules.50-cmds/095-uname.exp:
  testsuite: fix uname release test in 50-cmds suite  Update RPM spec file by
  the way to fix Koji build under 'armhfp' architecture.

2017-07-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * www/Makefile: www: fix README.html build in Makefile

  * NEWS, contrib/rpm/modules-tcl.spec, doc/source/diff_with_c-version.pod,
  modulecmd.tcl, www/index.html: Release of version 1.923

  * testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: skip term width tests if
  cannot query term

  * testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp: testsuite: fix cmp string
  in 50-cmds suite  When converting an array to a string list, the order of
  its element cannot be determined.

2017-07-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.70-maint/130-aliases.exp: Call for
  getModules in any cases in cmdModuleAliases  Previously getModules was only
  called when g_moduleAlias and g_moduleVersion global arrays were both empty,
  but in case of a global or user RC file that set an alias or a symbolic
  version, no more alias and version are looked for in module paths. To fix
  that, getModules is called for all defined module paths in any cases as it
  is done for cmdModuleAvail.  Add relative non-regression test in 130-aliases
  of 70-maint suite.

  * testsuite/modules.00-init/010-environ.exp: testsuite: clean MODULESHOME
  env var before start

2017-07-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Rework error handling in cmdModuleSearch  Take benefit of
  changes made on getPathToModule to return error information through the
  result list to avoid extra call to getPathToModule in cmdModuleSearch if
  nothing was found.  Now through the parsing of getModules results and
  getPathToModule alias resolution results, all the error information are
  gathered and registered if element name matches search string. At the end of
  the cmdModuleSearch procedure, all the registered errors are printed.  Add a
  'reportIssue' procedure to help reporting error messages depending of their
  kind, useful for getPathToModule and cmdModuleSearch procedures.

2017-07-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Return error info as result from getPathToModule  Rework
  getPathToModule procedure to return error information through the result
  structure.

2017-07-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Rework registering of access/invalid file error  Integrate
  modulefile or directory access issue or invalidity directly in the result
  array produced by findModules/getModules procedures. By doing so access to
  the error information is straigthforward for getPathToModule procedure.  To
  achieve this integration, the checkValidModule procedure has been revised to
  return any error message in addition to the check status.

2017-07-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.20-locate/060-rc.exp: Same res for
  version than alias on getPath/search/paths  Take symbolic version into
  accounts like done for alias when attempting to find out the modulefile
  targeted by a given module name. Symbolic versions were until now left away
  from this resolution treatment as their modulefile target were automatically
  part of the mod_list result returned by getModules procedure. But in some
  cases, a symbolic version may be hold on an alias, so the target modulefile
  of this symbol does not hold the same module name than this symbolic module
  and thus is not part of the result list.  This change is useful for
  resolution procedures like getPathToModule, cmdModuleSearch and
  cmdModulePaths. It also helps to localize the element in error, if any, as
  the availability of the symbolic version information will help to determine
  if the error concerns the search made by the user or not.  Add relative
  non-regression tests in 060-rc of 20-locate suite.

  * modulecmd.tcl, testsuite/modules.20-locate/060-rc.exp: Include global/user
  rc defs in search/whatis/paths  Ask getModules procedure to include global
  or user RC definitions when called in cmdModuleSearch and cmdModulePaths. By
  doing so aliases or symbolic versions defined in these global or user RC
  will be found and solved if specified as module to search on these commands.
  To do so, make 'search' argument of getModules procedure a list rather a
  string to be able to precise multiple search keywords like done by
  cmdModuleSearch.  Add non-regression tests in 060-rc of 20-locate suite.

  * modulecmd.tcl, testsuite/modules.20-locate/050-locrc.exp: Look at loaded
  mods in getPathToModule if asked only  Add 'look_loaded' argument to
  getPathToModule procedure in order to look at the loaded modules to get path
  for specified 'mod' only if this new argument is enabled. 'look_loaded'
  argument is enabled by default.  Disable this behavior when getPathToModule
  recursively call itself to solve aliases or when cmdModuleSearch or
  cmdModulePaths also attempt to solve alias in the middle of their own
  search.  Add non-regression tests in 050-locrc of 20-locate suite.

  * modulecmd.tcl: Constraint module resolution to specific dir if set  If
  'indir' argument is set for getPathToModule procedure, look to find
  modulefile corresponding to 'mod' argument only in modulepath directory
  specified.  Rely on this feature in cmdModuleSearch and cmdModulePaths for
  alias resolution, where result has to belong to the current modulepath
  directory being searched.

2017-07-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Rework getPathToModule to fully rely on getModules

  * modulecmd.tcl: Rework handling of global/user rc defs in getModules
  Introduce a 'g_rcVersion' array to handle symbolic versions set from a
  global or a user RC the same way than aliases with the 'g_rcAlias' array.
  Then in getModules procedure treat these definitions from global or user RC
  with a 'add_rc_defs' flag. If set and if aliases or symbolic versions match
  passed mod, these aliases or versions from global or user RC are added to
  the result array.  If search in getModules is set to 'rc_defs_included', the
  aliases and symbolic versions set from global or user RC added to the result
  array in addition to the search result from the passed directory.

2017-07-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.91-sort/020-avail.exp: Register in
  getModules dir default even if broken  Register a default set for a given
  module in the corresponding 'directory' entry in the result consolidated by
  the getModules procedure, even if this default does not correspond to a
  valid entry. This way it is up to the procedure treating the result provided
  by getModules to handle the verification of the default correctness and
  display any error.  As a consequence, a bad default will lead to no result
  displayed for the corresponding module in case of 'onlydefault' avail
  display.  Add tests in 020-avail of 91-sort suite to check behavior.

  * modulecmd.tcl: Register sym versions in getModules result array  Add
  tracking of the source file that defined a given symbolic module version in
  order to add in getModules these symbloc versions to the 'mod_list' result
  array if they match searched modulepath directory and module.  Symbolic
  versions are added to 'mod_list' array as 'version' entries so they can be
  ignored by treatment not requiring them (like display procedures that get
  symbols not independently but through the relative modulefile).

2017-07-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Take benefit of new dir handling in getPathToModule  Rework
  code in getPathToModule procedure to use the information that is now stored
  in the mod_list structure (result of the getModules procedure call). With
  this information it is now easier to get directory default element. Also
  empty directories are not part of mod_list result, so less tests are
  required in getPathToModule.

2017-07-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, .../emptydeepdir/emptydir/.ignored,
  testsuite/modulefiles.deep/modalias/dir3/.ignored,
  testsuite/modulefiles/emptydir/.ignored,
  testsuite/modules.91-sort/020-avail.exp: Handle empty dir in getModules dir
  consolidation  When consolidating directory content information in
  getModules procedure, handle empty directories so they are removed from the
  result array. When an empty directory is removed and its parent directory
  becomes empty after child removal, remove also this directory and so on.
  Moreover when an empty directory is removed and if it was the default
  version of this parent directory, default is changed to last element in
  parent directory.  Add and adapt tests in 020-avail of 91-sort suite.

2017-07-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/dirmodalias/.modulerc,
  testsuite/modulefiles/dirmodalias/1.0,
  testsuite/modules.70-maint/130-aliases.exp,
  testsuite/modules.90-avail/070-full.exp,
  testsuite/modules.91-sort/020-avail.exp: Fix default/latest avail when alias
  override dir  When an alias is set and overrides name of existing directory,
  take this alias in account for default and latest choice and ignore
  directory content.  Add and adapt tests in 020-avail of 91-sort suite.

2017-07-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.91-sort/020-avail.exp: Rework
  default/latest avail version search  Improve getModules procedure to
  register for each directory the default element in this dir (implicitly or
  explicitly set) and the list of all elements dictionarily sorted.  Then base
  the code in listModules procedure that look for default or latest versions
  only on the information stored in getModules array result rather than
  comparing every result names between each other.  As a side effect, default
  or latest available version printing does not confuse output anymore when at
  a given level a sub-directory element is last element in directory among
  modulefiles. Previously sub-directory was printed but last file among
  modulefiles was also printed (2 latests version at the same level).  Also to
  simplify behavior, and understand a directory tagged "default" does not
  appear anymore in default listing result as its content (the default version
  found in that dir) will be displayed.  Remove stringDictionaryCompare
  procedure that is not used anymore due to the code rework.  Add and adapt
  tests in 020-avail of 91-suite.

  * modulecmd.tcl, testsuite/modules.90-avail/030-multiple.exp: Correct
  inclusion of aliases in getModules res  Fix inclusion of aliases in
  getModules procedure results not to include these aliases if they are not
  part of the exact same path than path of the search. Previously if alias
  source path and search path were similar, aliases were wrongly included in
  results.  Add test in 030-multiple of 90-avail to check correct behavior.

2017-07-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Rework way getCollectionFilename proc pass descr  Return
  collection filename and description as a list result in
  getCollectionFilename procedure rather passing a variable name altered in
  procedure with 'upvar' call.

  * modulecmd.tcl, testsuite/modules.61-coll/080-access.exp: Distinguish
  collection found from read test  Previsously cmdModuleRestore and
  cmdModuleSaveshow procedures were directly calling for 'file readable' so
  existence and readability were tested in a single call. To be able to
  distinguish an exist issue from a read issue these two procedures now only
  test existence and readability is tested by the readCollectionContent
  procedure.  As a result, if a collection exists but is not readable a
  different message will now appear.

2017-07-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.60-initx/080-access.exp: testsuite: add 080-access tests
  in 60-initx suite  Test behaviors when shell init script cannot be accessed
  or written with 080-access tests added to 60-initx suite.

  * modulecmd.tcl: Change init* cmds write behavior  Previously initadd,
  initprepend, initswitch, initrm and initclear commands were altering shell
  initialization file by writing a new file then copying this new file to
  replace the existing init file.  This commit tries to simplify init file
  re-write by first consolidating new file content in a list variable, then
  when shell init file read is finished and new content is established, the
  shell init file is opened in write mode and its content is replaced with the
  new content.  In addition new behavior only re-writes shell init file if its
  content need to be altered.  Take this opportunity to also change name of
  some local variables to make them shorter.

  * modulecmd.tcl, testsuite/home/.modules.savenull,
  testsuite/modules.60-initx/005-init.exp,
  testsuite/modules.60-initx/010-list.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/030-switch.exp,
  testsuite/modules.60-initx/040-prepend.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp,
  testsuite/modules.60-initx/095-cleanup.exp: Raise error on init* cmds when
  no 'module load' found  When no 'module load' line has been found in shell
  init file raise an error on initadd, initprepend, initswitch, initrm and
  initclear commands as action requested was not performed.

2017-06-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.20-locate/081-access-rc.exp: testsuite: add
  081-access-rc tests in 20-loc suite  Check behavior when global RC files
  cannot be read.

  * testsuite/etc/rc, testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/065-rcerrs.exp: testsuite: more tests for global
  RC in 20-loc suite  Test behaviors when global RC is not set at all, or is
  set at $MODULESHOME/etc/rc or is both set at $MODULESHOME/etc/rc and
  $MODULERCFILE.

2017-06-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.61-coll/040-restore.exp: testsuite: add tests restoring
  bad coll in 61-coll

  * modulecmd.tcl, testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/050-saverm.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/080-access.exp: Normalize collection access issue
  error message  Test behaviors when collection cannot be accessed with
  080-access tests added to 61-coll suite.  Normalize error messages for the
  various collection-related commands when collection cannot be accessed.
  Catch also error when trying to access the collection directory but access
  rights on this directory does not allow for listing its content.

2017-06-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/setenv/0.8,
  testsuite/modulefiles/unsetenv/0.8,
  testsuite/modules.50-cmds/028-setenv-refcount.exp,
  .../modules.50-cmds/038-unsetenv-refcount.exp,
  testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/070-full.exp: Clean any previous ref count array
  on setenv/unsetenv  When manpulating path list with
  append-path/prepend-path/etc commands a _modshare variable is set to keep
  track of how many times each reference has been loaded. But if after these
  commands a setenv/unsetenv command is used, the _modshare variable is left
  alone whereas the path list variable is entirely replaced by a new value or
  destroyed.  To sanitize this kind of situation, any existing _modshare
  variable is cleaned-up when the associated variable is targeted by a setenv
  or an unsetenv command.  Non-regression tests 028-setenv-refcount and
  038-unsetenv-refcount in 50-cmds suite have been added to check new
  behavior.

2017-03-24  Bert Wesarg <bert.wesarg@googlemail.com>

  * init/bash.in, init/fish.in, init/ksh.in, init/sh.in, init/zsh.in,
  testsuite/install.00-init/010-environ.exp: init: Do not pollute
  tab-completion with `moduleraw` command.

2017-06-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/spread/5.0,
  testsuite/modulefiles/spread/6.0, testsuite/modulefiles/spread/7.0,
  testsuite/modulefiles/spread/8.0,
  testsuite/modulefiles/spreadrc/dir5/.modulerc,
  testsuite/modulefiles/spreadrc/dir5/1.0,
  testsuite/modulefiles/spreadrc/dir6/.modulerc,
  testsuite/modulefiles/spreadrc/dir6/1.0,
  testsuite/modulefiles/spreadrc/dir7/.modulerc,
  testsuite/modulefiles/spreadrc/dir7/1.0,
  testsuite/modulefiles/spreadrc/dir8/.modulerc,
  testsuite/modulefiles/spreadrc/dir8/1.0,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/302-interp-cascaded.exp,
  testsuite/modules.90-avail/070-full.exp: Dedicate an interp per
  interpretation level  Have a separate interpreter per level of
  interpretation in case of nested interpretations. By doing so a module
  loaded by another does not influence the interpretation of the module
  loading it.  Non-regression tests 302-interp-cascaded have been added to
  50-cmds suite.

2017-06-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/spread/3.0,
  testsuite/modulefiles/spread/4.0,
  testsuite/modulefiles/spreadrc/dir3/.modulerc,
  testsuite/modulefiles/spreadrc/dir3/1.0,
  testsuite/modulefiles/spreadrc/dir4/.modulerc,
  testsuite/modulefiles/spreadrc/dir4/1.0,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.50-cmds/301-interp-command.exp,
  testsuite/modules.90-avail/070-full.exp: Renew interp when command list is
  altered  Delete/recreate the interpreter when a native Tcl command is
  altered by a previous modulerc or modulefile interpretation. When a Tcl
  native command is overriden it appears in the defined procedure list. This
  procedure not part of the initial list is unset at the reset time which
  makes also disappear the Tcl command.  List of Tcl commands is dumped at
  initial interpreter creation time and compared after each procedure reset.
  If command lists differ, interpreter is deleted then recreated to ensure
  proper functioning.  Non-regression tests 301-interp-command have been added
  to 50-cmds suite.

2017-06-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/spread/1.0,
  testsuite/modulefiles/spread/2.0, testsuite/modulefiles/spreadrc/.modulerc,
  testsuite/modulefiles/spreadrc/dir1/.modulerc,
  testsuite/modulefiles/spreadrc/dir1/1.0,
  testsuite/modulefiles/spreadrc/dir2/.modulerc,
  testsuite/modulefiles/spreadrc/dir2/1.0,
  testsuite/modules.50-cmds/300-interp.exp,
  testsuite/modules.90-avail/070-full.exp: Reset interp state from one interp
  to another  When creating interpreter, dump its variable and procedure
  content so before each usage of this interpreter for another modulerc or
  modulefile the initial variable and procedure state is restored to avoid
  spread of definitions from one interpretation to another.  Variables are
  removed if they are not part of the initial state or restored if their value
  has changed. Procedures are removed if they are not part of the initial
  state. Nothing is done if procedures part of the initial state have been
  changed during an interpretation as there is no vital procedure in this
  list. Interpreter aliases are redefined before each interpretation to clear
  any potential override of these aliased procedures.  dumpInterpState and
  resetInterpState procedures are introduced to handle the dump/reset
  mechanism of the interpreter.  Non regression tests 300-interp in 50-cmds
  suite have been added to test the correct behavior of interpreters when
  running a list of modulerc and modulefiles.

2017-06-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Reuse interp rather creating new one each time  Make use of
  the same Tcl interp for each modulefile interpreation and use another one
  for each modulerc (but the same for each modulerc). By doing so we proceed
  like on C-version where same interpreter is used across modulefile or
  modulerc interpretation. Huge performance improvement is achievied with this
  change on commands making intensive use of interp like 'avail'.  Change code
  to use a static name for those interpreter: '__modulefile' for the interp
  dedicated to modulefile interpretation and '__modulerc' for the interp
  dedicated to the RC interpretation.

2017-06-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Workaround 'glob -nocomplain' for perms issue on Tcl8.4  On
  Tcl 8.4, 'glob -nocomplain' also silent permission errors. So to handle
  access issue to directory in findModules we workaround that by not using the
  '-nocomplain' option of glob but handling case where glob raise an error
  when directory is empty.

2017-06-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, modulecmd.tcl,
  testsuite/modules.20-locate/047-symerrs.exp: Revise alias and symbolic
  version internal registering  Register alias and symbolic version deep
  resolution at definition time through a new 'setModuleResolution' procedure
  called by 'module-version' and 'module-alias' procedures. Make use of new
  global array 'g_moduleResolved' and its reverse structure 'g_resolvedHash'
  to keep registered resolution at hand. Also introduce 'g_symbolHash' global
  array to register and easily get the list of all symbols for a given module.
  As resolution is now computed at definition time, the 'getVersAliasList' and
  'resolveModuleVersionOrAlias' procedures can be greatly simplified and just
  need to return the value of the 'g_symbolHash' or 'g_moduleResolved' arrays
  for the module name passed as argument. This change saves lot of time
  especially on commands heavily relying on these procedures like 'avail'.
  The global arrays 'g_versionHash', 'g_moduleDefault' and 'g_aliasHash'
  become useless with this change so they have been removed.  As a side effect
  of resolving alias and symbolic version at definition time, resolution loop
  are not registered anymore and produce an error message when spotted.

2017-05-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Try/catch rather test/try in findModules  When reading the
  content of a modulefile directory, try access then catch any issue rather
  testing access before trying. By doing so we reduce the number of 'access'
  system call. Getting an access error at the 'open' time is a bit more costly
  than at 'stat' time but most modulefile directories should not raise access
  issue, only some.  If any issue occur, register it in the g_access_mod_info
  global array as done in checkValidModule procedure. A unified procedure
  called registerAccessIssue has been setup for both checkValidModule and
  findModules procedures to share same code.

2017-06-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.00-init/071-args.exp: No error raise on
  empty arg list for load  To cope with initadd behavior that require at least
  an empty 'module load' line in startup files. (fix SF bug#88)

  * modulecmd.tcl, testsuite/home/.modules.saveempty,
  testsuite/modules.60-initx/020-add.exp: Fix initadd to handle load line w/o
  trailing space  Was previously expecting load directive to be written
  'module load ' to get a match. With fix, 'module load' line will also be
  matched.  Add test in 020-add of 60-initx suite to check that.

2017-06-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/break/5.0,
  testsuite/modulefiles/break/6.0, testsuite/modulefiles/continue/5.0,
  testsuite/modulefiles/continue/6.0, testsuite/modulefiles/exit/4.0,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.90-avail/070-full.exp: Fix use of break/exit/continue
  outside of a loop  Like C-version catch raised error when break or continue
  are called from outside of a loop to handle them as when they are called
  from modulefile main body.  Add non-regression tests in 200-break, 210-exit,
  220-continue and 230-loop of 50-cmds to check behavior when break, exit and
  continue are called from within a procedure.

2017-05-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.10-use/090-bad.exp: testsuite: add 090-bad tests in
  10-use suite

  * modulecmd.tcl, testsuite/modulefiles/use/4.0,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/032-prepend.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.90-avail/070-full.exp: Add tests for use/unuse of empty
  path name  Adapt cmdModuleUse to handle empty path name "" as any other path
  string, so an error is returned when file type is cheked.  Add tests in
  10-use and 50-cmds suites to check behavior of use and unuse commands with
  an empty path passed as argument.  Add by the way tests that were missing
  for bash shell in 10-use suite.

  * testsuite/modulefiles/use/3.0, testsuite/modulefiles/use/3.1,
  testsuite/modulefiles/use/3.2, testsuite/modules.10-use/032-prepend.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: add test for use
  --prepend  Introduce new tests for 'use --prepend' command in 10-use and
  50-cmds suites.

  * testsuite/modulefiles/RCS/1.0: testsuite: add modulefile part of ignored
  list

  * modulecmd.tcl: No modpath dir checks in cmdModule{Avail,Aliases}  Rely on
  checks already made in findModules procedures which trap bad directories
  (type, access rights, etc) by calling glob under the catch umbrella.  Make
  cmdModuleAliases use getModules procedure by the way rather listModules to
  trigger aliases and versions search.

  * testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.10-use/080-access.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.80-deep/080-access.exp: testsuite: add 080-access tests in
  10-use suite  Test behaviors when modulepath cannot be accessed. Centralize
  by the way the change_file_perms and restore_file_perms procedures that are
  now used in different parts of the testsuite.

2017-05-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/loc_dv9/.version, testsuite/modulefiles/loc_dv9/1.0,
  testsuite/modulefiles/loc_dv9/2.0,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: test module-version use
  in .version file  Add test to 030-defvers in 20-locate suite to check that
  default version is correctly resolved when it is declared with
  module-version command in a .version rc file.

2017-05-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/remove/1.0,
  testsuite/modules.50-cmds/062-remove-delim.exp,
  testsuite/modules.90-avail/070-full.exp: testsuite: add 062-remove-delim
  tests in 50-cmds suite

  * testsuite/modules.70-maint/130-aliases.exp: testsuite: add 130-aliases
  tests in 70-maint suite

2017-05-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/module/.ignored,
  testsuite/modulefiles/module/ignored~: testsuite: add test modfiles that
  should be hidden  Ensure modulefiles starting with a dot or finishing with a
  tilde are not reported in global 'module avail' results.

  * testsuite/modules.61-coll/020-savelist.exp: testsuite: test all 'savelist'
  display options

2017-05-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fix loop in lreverse proc provided for Tcl<8.5

  * modulecmd.tcl: Workaround min and max funcs not avail in Tcl<8.5

  * .travis.yml: travis: use version specific-tclsh on the diff. builds

  * INSTALL.txt, Makefile.in, configure, testsuite/config/unix.exp,
  testsuite/modules.70-maint/120-autoinit.exp: install: add --with-tclsh
  config opt package  Add the ability to choose the Tcl interpreter shell to
  setup in initialization scripts and to use when running the testsuite.

2017-05-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/help/2.0, testsuite/modulefiles/trace/all_on,
  testsuite/modules.50-cmds/105-trace.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp: Add tests for deprecated
  'module-trace' cmd

  * testsuite/modulefiles/info/others,
  testsuite/modules.50-cmds/284-info-others.exp,
  testsuite/modules.90-avail/070-full.exp: Add tests for bad or deprecated
  'module-info' cmds

  * modulecmd.tcl, testsuite/modulefiles/bad2/proc,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/085-test.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/070-full.exp: Put call to
  Modules{Display,Help,Test} procs under catch  Put the ModulesDisplay,
  ModulesHelp and ModulesTest procedures call under the same catch than used
  for the evaludation of the modulefile content. Doing so an error found
  within these procedures will be handled the same way than if the error is
  triggered from the main body of the modulefile.  As a consequence, the
  ModulesDisplay, ModulesHelp and ModulesTest procedures are not anymore
  called when an error has been raised during the modulefile main evaluation,
  since the same catch is shared.  Some existing test results have been
  adapted for this change and new tests have been added to check this specific
  behavior in 070-display, 080-help and 085-test in 70-maint suite.

2017-05-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp: Harmonize and test '--debug' option

2017-05-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.00-init/071-args.exp: Remove 'debug'
  module command  This hidden command produces output that is hard to process.
  So as it does not seem to be useful and as it is not tested, I prefer to
  remove it. If a need raise again on this 'debug' topic, a new command will
  be introduced.

2017-05-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, doc/source/module.pod.in, site.exp.in,
  testsuite/bin/install_test_csh, testsuite/bin/install_test_fish,
  testsuite/bin/install_test_sh, testsuite/config/unix.exp,
  testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/006-procs.exp,
  testsuite/install.00-init/025-autoinit.exp,
  testsuite/modules.70-maint/120-autoinit.exp: Test and document 'autoinit'
  module command

2017-05-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, doc/source/module.pod.in,
  modulecmd.tcl, testsuite/modules.70-maint/110-paths.exp: Fix, test and
  document 'paths' module command

  * doc/source/diff_with_c-version.pod, doc/source/module.pod.in,
  modulecmd.tcl, testsuite/modules.70-maint/100-path.exp, .../{095-cleanup.exp
  => 999-cleanup.exp}: Test and document 'path' module command

2017-05-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/070-unuse.exp: testsuite: cover use/unuse with no
  args  Add non-regression tests in 10-use suite for the 'use' and 'unuse'
  commands when no arg are passed to them (print list of enabled module
  paths).

  * testsuite/modules.90-avail/070-full.exp: testsuite: add 070-full test to
  90-avail suite  Validate output of all modules from a test modulepath with a
  specific terminal width setup.

  * .travis.yml: travis: coverage on each Tcl rel + x-server init  For a more
  complete coverage, run it on each Tcl releases, also enable a x-server on a
  test case to validate x-resource modulefile command.  To optimize builds,
  when MAKE_TESTCOVERAGE is enabled run 'testcoverage' instead of 'test'.

  * modulecmd.tcl, testsuite/modules.50-cmds/250-x-resource.exp: Correct use
  of xrdb tool when not in default path

2017-05-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, modulecmd.tcl,
  testsuite/modules.00-init/071-args.exp,
  testsuite/modules.60-initx/005-init.exp,
  testsuite/modules.60-initx/010-list.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/030-switch.exp,
  testsuite/modules.60-initx/040-prepend.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp,
  testsuite/modules.60-initx/095-cleanup.exp: Fix 'init*' commands to behave
  more like C-version  Adapt tests from 60-initx to match results produced by
  this module flavor. Clarify differences with C-version on these module
  commands in diff_with_c-version documentation.

2006-01-12  R.K. Owen <rk@owen.sj.ca.us>

  * testsuite/home/.modules, testsuite/modules.60-initx/005-init.exp,
  testsuite/modules.60-initx/010-list.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/030-switch.exp,
  testsuite/modules.60-initx/040-prepend.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp,
  testsuite/modules.60-initx/095-cleanup.exp: testsuite: added suite for the
  "module init*" cmds

2017-05-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml: travis: test 'make uninstall'

  * .gitattributes, .gitignore, Makefile.in, README.txt => README.md: Move to
  README.md to embed build and coverage status

  * .gitignore, .travis.yml, Makefile.in, contrib/nglfar2ccov: Integrate to
  codecov.io code coverage service  Add nglfar2ccov contrib script to
  translate Nagelfar coverage result for Codecov report. Append publication of
  coverage report to codecov.io service.

2017-05-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, Makefile.in, testsuite/config/unix.exp: Add makefile rules to
  produce code coverage  Instrument modulecmd.tcl, then run testsuite and
  produce a coverage report based on code coverage analysis of Nagelfar
  toolkit [1].  Include retrieval and installation of Nagelfar within
  Makefile.  [1] http://nagelfar.sourceforge.net/codecoverage.html

2017-05-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * INSTALL.txt, configure: install: clarify that 'configure' is a bash script

  * init/sh.in: init: make sh init script closer to POSIX spec  Provide
  support for /bin/sh flavors different than bash or zsh (dash for instance).

2017-05-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/bin/install_test_sh, testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/030-options.exp,
  testsuite/install.00-init/040-subshell.exp,
  testsuite/install.00-init/050-crossshell.exp: testsuite: adapt 'install'
  suite for dash sh-shell

2017-05-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .travis.yml: Introduce travis-ci configuration file

2017-05-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.50-cmds/090-uname-proc.exp: testsuite: adapt 'uname
  release' test for Ubuntu

  * modulecmd.tcl: Adapt sep and col display for very short width term  When
  terminal width is found too short to handle one a single line separator
  title or one column of content, set a minimal number of '-' for separator
  line and set column number to 1.

2017-05-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, INSTALL.txt, Makefile.in, README.txt, configure, site.exp.in,
  testsuite/bin/install_test_csh, testsuite/bin/install_test_fish,
  testsuite/bin/install_test_sh, testsuite/config/unix.exp,
  testsuite/install.00-init/005-init_ts.exp,
  testsuite/install.00-init/006-procs.exp,
  testsuite/install.00-init/010-environ.exp,
  testsuite/install.00-init/020-module.exp,
  testsuite/install.00-init/030-options.exp,
  testsuite/install.00-init/040-subshell.exp,
  testsuite/install.00-init/050-crossshell.exp: Introduce 'install'
  non-regression testsuite  This new non-regression testsuite is triggered by
  the 'make testinstall' command and checks modules-tcl installation is
  operational.

2017-05-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * INSTALL.txt: doc: fix reference to 'make test' in INSTALL

2017-05-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/fish.in: init: fix modulerc load test on 'fish' init script

2017-05-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/sh.in: init: fix interactive shell test on 'sh' init script

2017-05-03  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile.in: install: add notice at end of install for next steps

  * INSTALL.txt, Makefile.in, configure, contrib/rpm/modules-tcl.spec,
  init/Makefile.in: install: add --enable-example-modulefiles config opt
  Install by default some modulefiles provided as example in the system
  modulefiles directory.

  * Makefile.in, init/Makefile.in: install: skip modulefilesdir removal if not
  empty

  * contrib/modulefiles/dot, contrib/modulefiles/module-git,
  contrib/modulefiles/module-info, contrib/modulefiles/null,
  contrib/modulefiles/use.own: contrib: import and adapt example modulefiles
  Get and adapt regular set of example modulefiles provided with
  environment-modules.

2017-05-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/Makefile.in, init/zsh-functions/_module, init/zsh.in: Add completion
  script for Zsh

2017-04-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, doc/source/module.pod.in,
  doc/source/modulefile.pod, init/bash_completion, init/tcsh_completion.in,
  modulecmd.tcl, testsuite/modulefiles/info/command,
  testsuite/modulefiles/info/commandexp, testsuite/modulefiles/info/mode1,
  testsuite/modulefiles/info/mode2, testsuite/modulefiles/info/mode3,
  testsuite/modulefiles/info/mode4, testsuite/modulefiles/info/mode5,
  testsuite/modulefiles/info/mode6, testsuite/modulefiles/info/specified,
  testsuite/modulefiles/inforc/1.0, testsuite/modulefiles/inforc/2.0,
  testsuite/modulefiles/test/1.0, testsuite/modulefiles/test/1.2,
  testsuite/modulefiles/test/2.0, testsuite/modules.00-init/071-args.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/280-info-specified.exp,
  testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.50-cmds/282-info-command.exp,
  testsuite/modules.50-cmds/283-info-command-exp.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/085-test.exp: Introduce 'test' command and mode
  Add 'module test' command to trigger when called execution of a ModulesTest
  procedure in target modulefile following same kind of mechanism than 'module
  help'.  If ModulesTest procedure is missing from modulefile, a 'Unable to
  find ModulesTest proc' message is displayed but no error code is set. If
  ModulesTest procedure returns 1 (true), test is considered successful and
  message 'Test result: PASS' is displayed. If ModulesTest returns no or any
  other value, test is considered failed and message 'Test result: FAIL' is
  displayed. In this case, module command exit in error.  Adapt bash and tcsh
  completion scripts for the new command. Describe new command and new mode in
  docs.  Adapt existing non-regression tests and relative test modulefiles for
  new command and new mode in 00-init, 50-cmds and 70-maint suites. Add
  085-test tests in 70-maint to check coherent behavior of new command.

2017-04-29  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS, contrib/rpm/modules-tcl.spec, doc/source/diff_with_c-version.pod,
  modulecmd.tcl, www/index.html: Release of version 1.832

2017-04-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/getenv/1.0,
  testsuite/modules.50-cmds/260-getenv.exp: Fix getenv proc to correctly
  return env variable  Add 260-getenv non-regression test in 50-cmds suite.
  Thanks to Roberto Beccherle for reporting this issue.

  * contrib/rpm/modules-tcl.spec: rpm: make use of alternatives for man pages
  on Fedora

  * contrib/rpm/modules-tcl.spec: rpm: use rpm macro file provided in source
  tarball

2017-04-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * INSTALL.txt, Makefile.in, configure, contrib/rpm/modules-tcl.spec,
  doc/Makefile.in: install: add --enable-doc-install config opt feature  With
  this doc install can be disabled for package manager like rpm that handles
  by itself this kind of doc.

  * Makefile.in: install: add a 'srpm' make target

  * doc/source/diff_with_c-version.pod, doc/source/modulefile.pod: doc:
  clarify mgmt of file access issue

  * doc/source/diff_with_c-version.pod: doc: load in modfile unload in reserve
  order

2017-04-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod, doc/source/module.pod.in,
  doc/source/modulefile.pod: doc: clarify version/alias handling in avail and
  loc

2017-04-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Reset got mod list between each dir in getPathToModule

  * testsuite/modulefiles.deep/moddef/dir2/.modulerc,
  testsuite/modulefiles.deep/moddef/dir2/1.0,
  testsuite/modulefiles.deep/moddef/dir2/2.0,
  testsuite/modules.80-deep/080-access.exp: Add access issue non-reg tests in
  80-deep suite  Add non-regression tests in 080-access of 80-deep suite to
  guaranty correct behavior when some access issues happen on modulefile or
  modulerc or directory in case of deep modulefiles.

  * modulecmd.tcl: Mention not found alias target in cmdModuleSearch  For a
  given mod search, if an alias corresponds to this search but the associated
  modulefile cannot be located, report locate error on this not found target.

  * modulecmd.tcl: Stop mod dir resolution as soon as we get an issue  When
  looking to a directory content in order to resolve a modulefile in the
  getPathToModule procedure, stop this resolution as soon as we get an issue
  on a mod to return (invalid or access issue).

2017-04-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Adapt cmdModuleSearch to raise access error message  If
  searching for a given mod and no modulefile to interpret found, call for a
  resolution of this mod after re-enabling error report. If there are some
  access issues, they will be echoed via this call to getPathToModule.

  * modulecmd.tcl: Add indir arg to getPathToModule proc  Be able to
  optionally precise in what module directory to search for mod instead of
  looking for mod in every directory set in MODULEPATH. If 'indir' arg is set,
  do not raise the 'cannot locate mod' error.  Also build return list with
  module found status when a modulefile cannot be returned. Modulefile is then
  empty string and instead of module name boolean is set depending if a module
  has been found for search or not.

  * modulecmd.tcl, testsuite/modules.70-maint/060-apropos.exp: Display all
  whatis line when search matches one  Instead of displaying only the whatis
  line matching the apropos search, all whatis line are now displayed to get
  the full description of the module.  Add non-regression test in 060-apropos
  of 70-maint suite to check this specific behavior.

2017-04-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.80-deep/050-whatis.exp,
  testsuite/modules.91-sort/030-whatis.exp: Match alias but report modulefile
  on whatis/apropos cmds  As whatis/apropos commands make interpretation of
  modulefiles like load/unload, always report the module under their
  modulefile name not their alias name. Of course, alias and symbolic version
  may still be used to query whatis content, but displayed result will mention
  the relative modulefile targetted by this alias or symbol.  Adapt existing
  non-regression tests in 20-locate, 80-deep and 91-sort suites.

2017-04-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Plug cmdModuleSearch on getModules rather listModules
  Change cmdModuleSearch procedure to make use of getModules rather calling
  for listModules then running getPathToModule on each result return.  With
  getModules, getPathToModule only need to be called on alias result, not on
  modulefile, which saves a lot of time.

  * modulecmd.tcl, testsuite/modules.50-cmds/190-load.exp: Rely more on
  checkValidModule for full pathname module  Rather checking existence and
  readability within getPathToModule procedure, better rely on the
  checkValidModule procedure then analyse global arrays for error information.

2017-04-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Register then display modulefile access issue  When
  checking validity of a modulefile in checkValidModule procedure, register
  any access issue within a new global array g_access_mod_info.  Then when
  looking for a specific module, if an access issue occured during its check,
  display returned error code message.

  * modulecmd.tcl: Check found vers valid before using in getPathToModule
  Last element in a directory may be an alias whose target modulefile may be
  not be readable, so we need to check this target is available on our list of
  valid modulefiles before using it.

  * modulecmd.tcl: Check last elt in dir before use in getPathToModule  Handle
  cases where directory is empty or none of its elements can be accessed.

  * testsuite/modulefiles/loc_rc6/0.9,
  testsuite/modules.20-locate/080-access.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/050-long.exp: Add access issue non-reg tests in
  20-locate suite  Add non-regression tests in 080-access of 20-locate suite
  to guaranty correct behavior when some access issues happen on modulefile or
  modulerc or directory.  As a loc_rc6/0.9 module is added for the purpose of
  the new tests, adapt non-regression tests working with loc_rc6 in 90-avail
  suite.

2017-04-15  Jason Travis <jtravis@tgen.org>

  * doc/example.txt: doc: fix typo

2017-04-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/module/meta,
  testsuite/modules.50-cmds/150-module.exp: Reverse load command mod list on
  unload mode  When mode is set to unload, 'module load' commands in
  modulefile are interpreted as 'module unload' commands. To guaranty correct
  behavior regarding requirements, the module list passed to the load command
  is reversed to get and unload of the modulefiles in the reverse order than
  load.  This is the same behavior than applied on purge or restore commands,
  where loaded module list is reversed to be unloaded.  Add non-regression
  tests in 150-module of 50-cmds suite to check load and unload of meta-module
  works correctly over time.

  * init/modulerc.in, modulecmd.tcl, testsuite/home/rcnomagic,
  testsuite/home/rctosource, testsuite/modules.70-maint/090-source.exp: Relax
  magic cookie constraint on source command  As files sourced by a 'module
  source' command may be managed outside of the modulefile environment, relax
  the constraint of having a specific magic cookie at the start of the file to
  get required clearance before evaluation. This is typicaly helpful for the
  initialization modulerc file that may loose its magic cookie after some
  manual edits.  Add non-regression tests in 090-source of 70-maint suite.

  * INSTALL-win.txt, doc/howto/using_on_windows.pdf, doc/readme.txt,
  windows/module-tcl-win.chm: doc: Transform windows how-to from CHM to PDF
  Change "Using modules-tcl on Windows" how-to document from a CHM format to a
  PDF format, as CHM is a proprietary format that does not cope well with
  open-source project.  Document has been moved to 'doc' directory, a new
  'howto' sub-directory has been created to host this file.

  * .gitattributes, contrib/template/.gconf/apps/%gconf.xml,
  contrib/template/.gconf/apps/evolution/%gconf.xml,
  .../.gconf/apps/evolution/calendar/%gconf.xml,
  .../apps/evolution/calendar/notify/%gconf.xml,
  .../template/.gconf/apps/gconf-editor/%gconf.xml,
  contrib/template/.gconf/apps/gedit-2/%gconf.xml,
  .../.gconf/apps/gedit-2/plugins/%gconf.xml,
  .../apps/gedit-2/plugins/filebrowser/%gconf.xml,
  .../gedit-2/plugins/filebrowser/on_load/%gconf.xml,
  .../.gconf/apps/gedit-2/preferences/%gconf.xml,
  .../.gconf/apps/gedit-2/preferences/ui/%gconf.xml,
  .../gedit-2/preferences/ui/statusbar/%gconf.xml,
  .../.gconf/apps/gnome-power-manager/%gconf.xml,
  .../apps/gnome-power-manager/buttons/%gconf.xml,
  .../.gconf/apps/gnome-screensaver/%gconf.xml,
  .../template/.gconf/apps/gnome-settings/%gconf.xml,
  .../apps/gnome-settings/gnome-panel/%gconf.xml,
  .../template/.gconf/apps/gnome-terminal/%gconf.xml,
  .../.gconf/apps/gnome-terminal/profiles/%gconf.xml,
  .../gnome-terminal/profiles/Default/%gconf.xml,
  .../.gconf/apps/nautilus-open-terminal/%gconf.xml,
  contrib/template/.gconf/apps/panel/%gconf.xml,
  .../template/.gconf/apps/panel/applets/%gconf.xml,
  .../apps/panel/applets/clock_screen0/%gconf.xml,
  .../panel/applets/clock_screen0/prefs/%gconf.xml,
  .../applets/indicator_applet_screen0/%gconf.xml,
  .../apps/panel/applets/mixer_screen0/%gconf.xml,
  .../applets/notification_area_screen0/%gconf.xml,
  .../applets/show_desktop_button_screen0/%gconf.xml,
  .../panel/applets/trashapplet_screen0/%gconf.xml,
  .../panel/applets/window_list_screen0/%gconf.xml,
  .../applets/window_list_screen0/prefs/%gconf.xml,
  .../applets/workspace_switcher_screen0/%gconf.xml,
  .../workspace_switcher_screen0/prefs/%gconf.xml,
  .../template/.gconf/apps/panel/general/%gconf.xml,
  .../template/.gconf/apps/panel/objects/%gconf.xml,
  .../objects/browser_launcher_screen0/%gconf.xml,
  .../objects/clock_separator_screen0/%gconf.xml,
  .../apps/panel/objects/menu_bar_screen0/%gconf.xml,
  .../.gconf/apps/panel/objects/object_0/%gconf.xml,
  .../.gconf/apps/panel/objects/object_1/%gconf.xml,
  .../.gconf/apps/panel/objects/object_2/%gconf.xml,
  .../panel/objects/yelp_launcher_screen0/%gconf.xml,
  .../.gconf/apps/panel/toplevels/%gconf.xml,
  .../toplevels/bottom_panel_screen0/%gconf.xml,
  .../bottom_panel_screen0/background/%gconf.xml,
  .../panel/toplevels/top_panel_screen0/%gconf.xml,
  .../top_panel_screen0/background/%gconf.xml,
  contrib/template/.gconf/desktop/%gconf.xml,
  contrib/template/.gconf/desktop/gnome/%gconf.xml,
  .../.gconf/desktop/gnome/accessibility/%gconf.xml,
  .../gnome/accessibility/keyboard/%gconf.xml,
  .../.gconf/desktop/gnome/applications/%gconf.xml,
  .../gnome/applications/window_manager/%gconf.xml,
  .../.gconf/desktop/gnome/lockdown/%gconf.xml,
  contrib/template/.vim/colors/herald.vim,
  contrib/template/.vim/colors/moria.vim,
  contrib/template/.vim/colors/xoria256.vim,
  contrib/template/.vim/perl-support.zip,
  .../template/.vim/perlsupport/README.perlsupport,
  .../.vim/perlsupport/autoload/perlsupportgui.vim,
  .../perlsupport/autoload/perlsupportprofiling.vim,
  .../.vim/perlsupport/autoload/perlsupportregex.vim,
  .../template/.vim/perlsupport/doc/perlsupport.txt,
  .../template/.vim/perlsupport/ftplugin/perl.vim,
  .../codesnippets/SmallProf-variables.pl,
  .../perl-support/codesnippets/dot.SmallProf,
  .../codesnippets/free-software-comment,
  .../perl-support/codesnippets/module-interface.pl,
  .../perlsupport/perl-support/codesnippets/new.pl,
  .../codesnippets/pod-template-application.pl,
  .../codesnippets/pod-template-module.pl,
  .../print-data-structure-with-Dumper.pl,
  .../perl-support/codesnippets/print-hash-sorted.pl,
  .../perl-support/codesnippets/print-hash.pl,
  ...process-all-files-in-a-directory-recursively.pl,
  .../perl-support/codesnippets/slurp-file.pl,
  .../.vim/perlsupport/perl-support/doc/ChangeLog,
  .../perlsupport/perl-support/doc/perl-hot-keys.pdf,
  .../perlsupport/perl-support/doc/perl-hot-keys.tex,
  .../.vim/perlsupport/perl-support/doc/pmdesc3.text,
  .../perl-support/modules/perl-modules.list,
  .../perl-support/rc/customization.ctags,
  .../perl-support/rc/customization.gvimrc,
  .../perl-support/rc/customization.perltidyrc,
  .../perl-support/rc/customization.smallprof,
  .../perl-support/rc/customization.vimrc,
  .../perlsupport/perl-support/scripts/csv2err.pl,
  .../perlsupport/perl-support/scripts/efm_perl.pl,
  .../perlsupport/perl-support/scripts/pmdesc3.pl,
  .../perlsupport/perl-support/scripts/wrapper.sh,
  .../perlsupport/perl-support/templates/Templates,
  .../perl-support/templates/comments.template,
  .../perl-support/templates/idioms.template,
  .../perl-support/templates/pod.template,
  .../perl-support/templates/statements.template,
  .../perlsupport/perl-support/wordlists/perl.list,
  .../.vim/perlsupport/plugin/perl-support.vim,
  contrib/template/.vim/plugin/matrix.vim,
  contrib/template/.vim/syntax/fluxkeys.vim,
  contrib/template/.vim/syntax/perl.vim: Remove .gconf/.vim dirs from profile
  template example  These two directories were big with very site-specific
  content. With this removal profile template example can now be integrated
  into distribution tarball releases.

  * modulecmd.tcl, testsuite/modules.20-locate/020-fqual.exp,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/035-defname.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/055-locrcerrs.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.80-deep/030-display.exp: Disable modulerc command report
  on display-mode  Introduce a g_inhibit_dispreport global variable to be able
  to inhibit the report of command set within a modulerc file when mode is set
  to 'display'.  This way a 'display' of a modulefile only outputs stuff from
  this modulefile and not from the various .modulerc on the path toward this
  modulefile.  Adapt most display-related non-regression tests to correctly
  check returned output from start to end.

2017-04-16  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash_completion, init/tcsh_completion.in: Eliminates sym from avail
  res in completion scripts  Previously only '(default)' symbol was wiped from
  avail result in bash and tcsh completion scripts. Adapt sed rules to clean
  up every potential symbols.

  * testsuite/modulefiles/loc_rc1/1.0, testsuite/modulefiles/loc_rc1/2.0,
  testsuite/modulefiles/loc_rc2/1.0, testsuite/modulefiles/loc_rc2/2.0,
  testsuite/modulefiles/loc_rc3/1.0, testsuite/modulefiles/loc_rc3/2.0,
  testsuite/modulefiles/loc_rc3/3.0, testsuite/modulefiles/loc_rc4/1.0,
  testsuite/modulefiles/loc_rc4/2.0, testsuite/modulefiles/loc_rc4/3.0,
  testsuite/modulefiles/loc_rc5/1.0, testsuite/modulefiles/loc_rc5/2.0,
  testsuite/modulefiles/loc_rc6/1.2, testsuite/modulefiles/loc_rc7/0.9,
  testsuite/modulefiles/loc_rc7/1.2,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/055-locrcerrs.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.80-deep/050-whatis.exp: Add non-reg tests for whatis cmd
  on alias or sym  Add bunch of tests in 050-locrc of 20-locate suite and
  050-whatis of 80-deep suite to guaranty over time correct behavior of whatis
  command on module aliases or symbolic module version.

  * testsuite/modulefiles.deep/modsym/.modulerc,
  testsuite/modulefiles.deep/modsym/dir1/1.0,
  testsuite/modulefiles.deep/modsym/dir2/.modulerc,
  testsuite/modulefiles.deep/modsym/dir2/2.0,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/999-cleanup.exp: Non-reg tests for symbol on deep
  modules  Add non-regression tests in 80-deep suite to ensure correct
  behavior of module-version symbols on deep modulefiles.

  * testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.91-sort/020-avail.exp: Symbols are avoided when looking
  for implicit default  Add non-regression tests in 050-locrc of 20-locate
  suite and in 020-avail of 91-sort suite to clarify that symbolic versions do
  not take part of the choice made when looking for an implicit version or a
  latest version (only aliases and modulefiles can be returned).

  * modulecmd.tcl, testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp: Add symbolic version target to res
  list on getModules  When looking for modules, after looking at paths
  contents and module aliases set within the current dir, look at symbolic
  versions set with module-version to see if some match searched mod. If so,
  add the modulefile target of these symbolic version to the result list if
  found in path previously but not yet added to the result list.  With this
  new behavior a 'module avail mod/sym' will display the relative 'mod/vers'.
  Previously nothing was returned.  Add non-regression tests in 020-single,
  040-wild and 050-long of 90-avail suite to check this new behavior persist
  over time.

  * modulecmd.tcl, testsuite/modulefiles.deep/modalias/.modulerc,
  testsuite/modulefiles.deep/modalias/3.0,
  testsuite/modulefiles.deep/modalias/dir1/.modulerc,
  testsuite/modulefiles.deep/modalias/dir1/1.0,
  testsuite/modulefiles.deep/modalias/dir2/.modulerc,
  testsuite/modulefiles.deep/modalias/dir2/2.0,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/999-cleanup.exp: Optimize getPathToModule when
  solved alias is upper-mod  Improve getPathToModule procedure to be able to
  solve any-kind of module aliases within a single call rather than restarting
  new searches when solved aliases are on the upper part (elt1/) of a current
  search (elt1/elt2/) sharing same module root.  Add isSameModuleRoot
  procedure on the way to be able to check two modules share the same base
  name.  Add non-regression tests in 020-load and 030-display of 80-deep suite
  to guaranty that sub or upper aliases are correctly found.

  * modulecmd.tcl: Change default search value of listModules to 'wild'
  Previously set default value for 'search' argument was deprecated so change
  it to 'wild' which will result when passed to getModules in the addition of
  a wildcard to look at modules. This way the wildcard is only added in
  conjunction of listModules searches as getPathToModule searches should
  search for exact things.

  * modulecmd.tcl: Move deep mod lookup logic from findModules to getModules
  When a deep module is asked for searched to getModules (elt1/elt2/vers) call
  findModules to search on upper element (elt1) in order to return every
  modulerc or modulefiles related to this module.  Then getModules parses the
  array returned by findModules to build its results with only the
  directories, modulefiles and aliases that correspond to the asked search.
  By doing so, some modulerc search logic can be eliminated from findModules,
  as we will now always look at the whole deep module content.

2017-04-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.50-cmds/190-load.exp: Rework handling of
  error raised by checkValidModule  In checkValidModule procedure, register an
  entry in a g_invalid_mod_info global array when a modulefile does not
  correctly set the magic cookie. By doing so we are able to state during a
  modulefile search in getPathToModule procedure that the modulefile was found
  but it was not correctly defined.  This mechanism may be extended to other
  kind of modulefile error (like access issues).  Add new non-regression tests
  to 190-load in 50-cmds suite for modulefile specified as full path as new
  error handling better detect issues on this use-case.

2017-04-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Optimize getPathToModule when solved alias is sub-mod  In
  case an alias resolution leads to a subsequent modulefile (modulefile part
  of the current searched tree), go further in that searched tree rather
  restarting search with a new getPathToModule call.

2017-04-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/loc_rc7/.modulerc,
  testsuite/modulefiles/loc_rc7/0.9, testsuite/modulefiles/loc_rc7/1.2,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.91-sort/020-avail.exp: Add aliases to dir list of elements
  in getModules  When looking for an implicit default in a directory, now
  aliases are part of the directory items so it can be returned as the last
  element in it (highest numerically sorted version).  Add tests in 050-locrc
  of 20-locate suite to guaranty this behavior on load command and tests in
  020-avail of 91-sort suite to guaranty this behavior on avail command.

2017-04-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.70-maint/045-listlong.exp: Consider upper
  dir .version file in findModules  If searched mod is found next to a
  .version file (in same directory), add this rc file to the list of those to
  interpret (like any modulerc files found on the path between the modulepath
  dir and the dir of the search mod).  With this fix 'module list' will
  correctly display the 'default' tag along loaded modules when set via a
  .version file.  Adapt 045-listlong test in 70-maint suite to check this.

  * modulecmd.tcl, testsuite/modules.70-maint/045-listlong.exp: Plug
  cmdModuleList on getModules rather getPathToModule  Call for getPathToModule
  for each loaded modules to retrieve their tag list and modulefile
  modification time in case of long output.  Also fix long output to display
  tag list if any. Add a non-reg test in 045-listlong of 70-maint suite to
  check that.

  * modulecmd.tcl, testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.90-avail/020-single.exp: Plug getPathToModule on
  findModules/getModules  Make getPathToModule procedure relying on
  findModules and getModules procedures for module search and rc file
  interpretation, as listModules now does. findModules and getModules have
  been adapted to also handle getPathToModule use-cases.  Code to look for
  modules is now merged in a common set of procedures which will help both
  search sides (getPathToModule/listModules) to get immediate benefit from
  enhancement made on this code area.  As a side effect a 'module avail' on a
  module name which is an alias will now correctly return this alias module. A
  test has been added in 020-single of 90-avail suite to check that.

  * modulecmd.tcl: Introduce getLoadedModuleFileList proc  Add a
  getLoadedModuleFileList procedure to return a list corresponding to the
  content of the _LMFILES_ environment variable (like getLoadedModuleList for
  LOADEDMODULES).  Take this opportunity to register modulefile path in
  g_loadedModules global array, to be able to easily determine what file
  correspond to what loaded module.

2017-04-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.91-sort/020-avail.exp: Separate file
  search from display treatment in listModules  Introduce findModules and
  getModules procedures to handle file search for modulefiles and rc files
  interpretation. findModules is in charge of searching paths for
  module-related files. getModules calls findModules to get file list, then
  interprets any rc files found to consolidate a list of modules to return.
  listModules procedure now calls for getModules to get an array of modules
  corresponding to the directory passed as argument. So focus of listModules
  is now to prepare results for display.  This new methodolidy also corrects
  way directory where handled in case of '--default' and '--latest' listing.
  On a '--default' listing, a modulefile does not appear anymore if a dir is
  set default at the same level. On a '--latest' listing: a dir does not
  appear anymore if set default but not the latest.  Non-regression tests have
  been added in 020-avail of 91-sort suite to ensure a correct behavior will
  be maintained over time.

2017-03-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Protect read/close under catch in checkValidModule  Improve
  code of checkValidModule procedure to put read and close calls under catch
  protection. Also, only read 8 characters at the beginning of file to check
  header is valid.

  * modulecmd.tcl: Read then eval rather source module content  Replace source
  of modulefile and modulerc content by a file read then an evaluation of its
  content to optimize open/read/close operations of a 'module avail' command.
  By doing so, a modulerc is only read once during avail rather twice (once
  for validity check, then for sourcing content). Now validity check is
  performed at the same time the content is read to be passed for evaluation.
  In terms of Tcl C code, read+eval is equivalent to source. Only 'info
  script' has to be adapted with read file name in order to get same behavior
  during module code evaluation.

2017-03-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Call report only once per list to display

  * modulecmd.tcl: Optimize grid size computation in displayElementList
  Change algorithm strategy to compute the optimized number of column that can
  be used to display in column-fashion a list of elements. Previous algorithm
  was starting with a number of column equals to the number of element in
  list. New algorithm starts closer to the solution with a number of column
  equals to the basic solution where each column width is the same (equals to
  the length of biggest element in list). This approach reduces the number of
  iteration needed to reach best solution.  Also when a column width is
  changed currently computed row widths is adapted only for this column and
  not entirely reset.  All these optimizations drastically improve grid size
  computation time. New algorithm is approximatelly 12 time faster than the
  previous one. There is no more an overhead for this display mode.

2017-03-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles.deep/dir2/.modulerc,
  testsuite/modulefiles.deep/dir2/1.0, testsuite/modulefiles.deep/dir2/3.0,
  testsuite/modulefiles.deep/modload/dir2/.modulerc,
  testsuite/modulefiles.deep/modload/dir2/1.0,
  testsuite/modulefiles.deep/modload/dir2/3.0,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/999-cleanup.exp: Fix getModuleNameVersion to
  translate mod name on demand only  Translate module name to currently
  interpreted module name when name correspond to the last part this
  interpreted module only if translation is enabled (was previously done in
  all cases). Translation is enabled when usage of symbolic modulefile names
  are allowed, which means it is enabled from 'module-version', 'module-alias'
  and 'module-info version' and 'module-info symbols'.  Add non-reg tests in
  020-load and 030-display of 80-deep suite to check that.

2017-03-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Add license and copyright header to modulecmd.tcl  Take
  also this opportunity to correct the version number which should be equal to
  the number of commits but which was commit number+1

  * contrib/doc2www, www/c/INSTALL.html, www/c/NEWS.html, www/c/README.html,
  www/c/module.html, www/c/modulefile.html, www/index.html: Append myself to
  the copyright list

2017-03-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/rpm/macros.modules-tcl, contrib/rpm/modules-tcl.spec: install: add
  initial RPM specfile

  * init/Makefile.in, init/bash.in, init/csh.in, init/ksh.in, init/sh.in,
  init/zsh.in: install: fix reset of regular path in switchml  Avoid resetting
  regular path (/usr/bin) or manpath (/usr/share/man) when switching from Tcl
  to C version in switchml utility.

2017-03-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.50-cmds/250-x-resource.exp: Raise error
  on x-resource if DISPLAY not set  X11 resource changes cannot occur if
  DISPLAY environment variable is not set. So raise an error in x-resource
  procedure if we detect that DISPLAY is not defined.  Adapt 250-x-resource
  tests in 50-cmds to change expected results in case testsuite is ran with no
  DISPLAY set (like during rpm build).

2017-03-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile.in: testsuite: remove runtest verbose mode  Remove testsuite
  verbose mode as it is now sucessfull. No need to always get full details of
  the test run.  Replace it by the RUNTESTFLAGS make variable to be able to
  set verbository on demand from the command-line.

  * INSTALL.txt, Makefile.in, configure, doc/Makefile.in: install: do not
  build html doc as not installed  HTML documentation is not included in the
  install process so do not build it and remove strong requirement of
  pod2html.

2017-03-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/lisp.in: init: fix lisp script for env-change actions

2017-03-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * NEWS, modulecmd.tcl: Release of version 1.775

  * modulecmd.tcl: Fix MODULESHOME setup in autoinit for libexec install

  * contrib/doc2www, www/Makefile, www/c/INSTALL.html, www/c/NEWS.html,
  www/c/README.html, www/c/module.html, www/c/modulefile.html, www/index.html:
  www: add README and INSTALL files for Tcl and C

2017-03-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Remove use of untested var in runModulerc

  * testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/150-module.exp: testsuite: be resilient to
  _modshare fluctuation  '_modshare' variables are get and set as an array so
  order of elements is not guaranteed. Multiple elements set in a _modshare
  variable may be ordered differently depending of the current system or the
  path they represents.  150-module and 088-info-isloaded tests from 50-cmds
  have been adapted to be resilient to _modshare variable fluctuation.

2017-03-03  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/LICENSE.GPL => COPYING.GPLv2, INSTALL-win.txt, INSTALL.txt,
  Makefile.in, README.txt, doc/Makefile.in, doc/example.txt, doc/install.txt,
  doc/installwin.txt, doc/readme.txt, init/README.txt, readme.txt: doc: Adapt
  and harmonize INSTALL and README files  Change documents markup to improve
  readability and extend content to fit the new installation process.
  INSTALL*, README and LICENSE documents have been moved/renamed in order to
  be found at the root directory to conform with open-source project standards
  and let people easily find these files once they retrieve either a
  distribution tarball or a clone of git repository.  README.txt in init dir
  has been deleted as INSTALL.txt in root directory now integrates its
  content.  INSTALL.txt and example.txt are now installed in 'docdir' at 'make
  install' time.

2017-03-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/diff_with_c-version.pod: doc: add tcl specific stuff to
  diff_with_c-version  Improve diff_with_c-version document to describe the
  features of the Tcl-version that are not supported on the C-version.  Also
  state that the diff takes C version 3.2.10 against Tcl version 1.729 as a
  basis. Differences appearing past these versions will be flagged with the
  release number of appearance.

  * configure, init/Makefile.in, init/bash.in, init/csh.in, init/fish.in,
  init/ksh.in, init/perl.in, init/python.in, init/sh.in, init/tcl.in,
  init/zsh.in: init: do not load modulerc config is env already set  If
  MODULEPATH or LOADEDMODULES is already set, do not source the modulerc
  configuration file in init scripts.  As a consequence, if .modulespath sets
  a module path, then modulerc will be ignored which clarifies how default
  configuration is loaded: if both .modulespath and modulerc are defined,
  .modulespath takes precedence over modulerc.  So if .modulespath sets a
  module path, all loaded modules defined in the modulerc file will be
  ignored.

2017-02-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Introduce release date to display next to version

2017-02-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile.in, doc/Makefile.in, init/Makefile.in: install: add 'DESTDIR'
  support

  * .gitignore, Makefile, Makefile.in, configure, doc/{Makefile =>
  Makefile.in}, init/.gitignore, init/{Makefile => Makefile.in}: install:
  introduce a 'configure' step  Add a 'configure' shell script to generate
  Makefiles, rather than choosing installtion directories or enabled features
  a the 'make' step. By doing so, installation process is clearer and closer
  to build conventions.  Use a custom 'configure' shell script rather than
  using autoconf and automake tool suites in order to keep good readability of
  Makefiles. Moreover our build use case is relatively small since nothing is
  complied so there is no real benefit of using autoconf/automake.  Adapt
  Makefiles to this 'configure' change and add 'distclean' target.

2017-02-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, init/Makefile: init: add make option to bind on C ver
  .modulespath  Add the 'usecverdotmodulespath' make argument to generate
  init/.modulespath config file as a symlink on C version installed
  .modulespath configuration (by doing so both C and Tcl versions installed on
  the same environment can share the same MODULEPATH initialization setup).
  'cverinitdir' must be known for 'usecverdotmodulespath' to be taken in
  account.

  * Makefile, init/Makefile, init/bash.in, init/csh.in, init/fish.in,
  init/ksh.in, init/sh.in, init/zsh.in: init: define switchml tool in shell
  init scripts  Introduce 'switchml' tool, a shell function (or alias for csh
  or tcsh shells) that swap currently enabled Modules version (C or Tcl) by
  the other version (C or Tcl).  In case a swapped version was defining
  specific PATH or MANPATH entries, these specific entries are removed when
  switching to the other version to avoid still relying on the binaries and
  man pages of the swapped-out version.

2017-02-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitattributes, .gitignore, Makefile, doc/Makefile: install: add a 'dist'
  make target  Build a distribution tarball from the git repository content
  with the 'dist' make target.  Add gitattributes to exclude git-specific and
  website-specific content in distribution tarball. Also exclude user home
  directory template from dist tarball as its content has a very large size
  and may not apply to everybody.  Adapt parts of Makefiles to behave
  correctly when ran from a distribution tarball, not from the git repository.

2017-02-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, doc/Makefile, init/Makefile: install: add an 'uninstall' make
  target

  * Makefile, init/.modulespath.in, init/Makefile, init/modulerc.examp,
  init/modulerc.in: init: generate modulerc and .modulespath configs  Add
  makefile rules to generate the modulerc and .modulespath configuration
  files. modulerc is generated in any case. By default it hosts the MODULEPATH
  and LOADEDMODULES definition passed to the Makefile with the 'modulepath'
  and 'loadedmodules' argument.  The 'setdotmodulespath' Makefile argument is
  also introduced. When set to 'y', the .modulespath is generated and hosts
  the MODULEPATH definition. In this case, modulerc config file only gets the
  LOADEDMODULES definition or is set empty if no value is passed to the
  'loadedmodules' argument.

2017-02-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, doc/Makefile, doc/source/module.pod.in, init/Makefile: install:
  add modulefilesdir configuration option  @modulefilesdir@ enables to set the
  default system-wide modulefiles directory as described in module.1 man page.

  * Makefile, init/Makefile, init/bash.in, init/csh.in, init/fish.in,
  init/ksh.in, init/sh.in, init/zsh.in: init: set PATH and MANPATH in shell
  init scripts  Add the possibility to set PATH and MANPATH in shell init
  scripts (sh-like, csh-like and fish scripts) if specific option are enabled
  in makefile (enabled by default). With this, bin directory and man directory
  of the modules-tcl installation are prepended to the MANPATH and PATH
  environment variables.  Prepending is required for PATH as manpath utility
  in its default Linux setup will automatically set MANPATH from PATH change,
  so if we want MANPATH to be prepended, PATH has to be prepended.

2017-02-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, Makefile, doc/Makefile, doc/source/{module.pod =>
  module.pod.in}: doc: adapt module doc to path used for install  Use same
  process than init scripts to translate module documentation from
  configure-like pattern (@prefix@, @initdir@, etc) to the path name chosen
  for installation.

  * .gitignore, doc/Makefile: doc: make a txt version of diff_with_c-version
  doc  And include this txt version in the documentation directory made for
  installation.

  * .gitignore, Makefile, doc/Makefile, init/.gitignore, init/Makefile,
  init/bash.in, init/csh.in, init/fish.in, init/ksh.in, init/lisp.in,
  init/perl.in, init/profile.csh.in, init/profile.sh.in, init/python.in,
  init/sh.in, init/tcl.in, init/tcsh_completion.in, init/zsh.in: Introduce an
  installation process  Introduce an 'install' target in makefiles to provide
  an installation process for modules-tcl.  Defines installation paths with
  Makefile variables in order to avoid having a ./configure step. Install
  paths are set during the 'make' step by passing 'prefix', 'libexecdir',
  'mandir', etc arguments to the make command. If no path definitions are
  passed to the 'make' command, installation will be made in
  '/usr/local/modules-tcl' by default.  Installation paths provided (or set
  from the default value found in Makefile) are saved at the 'make' step in a
  .makeinstallpath file. Then at the 'make install' step, this
  .makeinstallpath file is read and make knows where to install modules-tcl.
  These paths definitions are also used to translate *.in init script to their
  installed version.  modulecmd.tcl script is by default set to be installed
  in the libexec directory to follow FHS specification (as this script is an
  executable but not directly accessed by users).

  * init/csh.in: init: throw module exit code on csh-like script  Also takes
  this opportunity to refactor code of this init script.

2017-02-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/.gitignore, init/Makefile, init/profile.csh.in, init/profile.sh.in:
  init: add /etc/profile.d scripts

  * init/.gitignore, init/Makefile, init/bash.in, init/csh.in, init/fish.in,
  init/ksh.in, init/sh.in, init/zsh.in: init: ensure module definition in
  sh-like sub-shells  Adapt shell init scripts (sh-like, csh-like and fish) to
  get module defined in sh-like sub-shells. The method to define the module
  function in interactive or non-interactive sh-like sub-shells vary according
  to the shell flavor.  The below table is an attempt to summarize the method
  to use to get 'module' function defined in sub-shell depending of the
  SH-shell kind and if the sub-shell is in interactive mode or not.
  +-----+----------+-----------+-------+ | ENV | BASH_ENV | export -f | FPATH
  | +-------------+-------------------+-----+----------+-----------+-------+ |
  |inter sub-shell    |     |          |     X     |       | |BASH
  +-------------------+-----+----------+-----------+-------+ |
  |non-inter sub-shell|     |    X     |     X     |       |
  +-------------+-------------------+-----+----------+-----------+-------+ |
  |inter sub-shell    |  X  |          |     X     |       | |SH
  +-------------------+-----+----------+-----------+-------+
  |(BASH-compat)|non-inter sub-shell|     |          |     X     |       |
  +-------------+-------------------+-----+----------+-----------+-------+ |
  |inter sub-shell    |  X  |          |           |   X(*)| |SH
  +-------------------+-----+----------+-----------+-------+ |(ZSH-compat)
  |non-inter sub-shell|  X  |          |           |   X(*)|
  +-------------+-------------------+-----+----------+-----------+-------+ |
  |inter sub-shell    |  X  |          |           |   X   | |KSH
  +-------------------+-----+----------+-----------+-------+ |
  |non-inter sub-shell|     |          |           |   X   |
  +-------------+-------------------+-----+----------+-----------+-------+ |
  |inter sub-shell    |  X  |          |           |   X(*)| |KSH
  +-------------------+-----+----------+-----------+-------+ |(ZSH-compat)
  |non-inter sub-shell|  X  |          |           |   X(*)|
  +-------------+-------------------+-----+----------+-----------+-------+ |
  |inter sub-shell    |     |          |           |   X(*)| |ZSH
  +-------------------+-----+----------+-----------+-------+ |
  |non-inter sub-shell|     |          |           |   X(*)|
  +-------------+-------------------+-----+----------+-----------+-------+ (*)
  autoload required  Shell init scripts have been adapted to implement these
  different method to cover most of the initialization cases.  Note that 'zsh'
  requires to declare with autoload the functions put in FPATH directory so
  there is no gain to configure FPATH for 'zsh' compare to a bare source of
  the 'zsh' init script.

  * init/.gitignore, init/bash.in, init/csh.in, init/fish.in, init/ksh.in,
  init/perl.in, init/python.in, init/sh.in, init/tcl.in, init/zsh.in: init:
  set MODULEPATH if not defined  Initialize MODULEPATH variable if not
  defined, with an empty string or with the content of the init/.modulespath
  file if it exists and it is readable. This file contains a list of module
  paths, one per line or many per line separated by colon character.  This way
  of initializing MODULEPATH has been retrieved from C version init scripts in
  order for sysadmins to keep a familiar concept to set default MODULEPATH.

  * init/bash.in, init/csh.in, init/fish.in, init/ksh.in, init/perl.in,
  init/python.in, init/sh.in, init/tcl.in, init/zsh.in: init: set empty
  LOADEDMODULES if not defined

2017-02-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/Makefile, init/bash.in, init/csh.in, init/tcsh.in: init: introduce
  SHELLNAME var to replace in script  With SHELLNAME replacement variable,
  tcsh init script is derivated from csh init script.

  * init/bash.in, init/csh.in, init/fish.in, init/ksh.in, init/perl.in,
  init/python.in, init/sh.in, init/tcl.in, init/tcsh.in, init/zsh.in: init: do
  not source init/modulerc if not readable

  * doc/source/module.pod: doc: fix python init example for python3 compat

  * init/.gitignore, init/Makefile, init/{tcsh_completion =>
  tcsh_completion.in}: init: replace tclsh and MODULESHOME in tcsh_completion

  * init/Makefile, init/bash.in, init/csh.in, init/fish.in, init/ksh.in,
  init/lisp.in, init/perl.in, init/python.in, init/sh.in, init/tcl.in,
  init/tcsh.in, init/zsh.in: init: get and set TCLSH in init scripts  As for
  MODULESHOME, get 'tclsh' location from Makefile then replace '@TCLSH@'
  pattern in shell init scripts with found location rather than guessing it in
  the init scripts.  By doing so, same 'tclsh' location search is applied to
  all init scripts. Search is performed with 'command' to look at a predefined
  list of PATHs in order to be resilient to the current PATH content.

  * init/Makefile, init/bash.in, init/csh.in, init/fish.in, init/ksh.in,
  init/lisp.in, init/perl.in, init/python.in, init/sh.in, init/tcl.in,
  init/tcsh.in, init/zsh.in: init: normalize use and replacement of
  MODULESHOME  Simplify guess of MODULESHOME location by more relying on
  'make' capabilities than 'perl'.  Adapt init scripts for the different
  shells to use the MODULESHOME variable that is replaced during the 'make'
  process rather than ${MODULESHOME}, $env(MODULESHOME), etc.  By the way, use
  a replacement pattern closer to what 'configure' is using with
  '@MODULESHOME@' rather than '$MODULESHOME' which was confusing in shell
  scripts.

  * init/zsh.debug: init: remove unused zsh.debug

2017-02-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fix MODULESHOME setup in autoinit  Set modulecmd.tcl script
  directory absolute then guess MODULESHOME from it. Adapt this setup if
  modulecmd.tcl is located in a 'bin' directory as in this case MODULESHOME is
  set to the upper directory (as 'init' directory will be located at the same
  level than the 'bin' dir not inside the 'bin' dir).  By the way, fix perl
  autoinit code to simply use 'argv0' rather than 'MODULESHOME' in order to
  set the module function as for the other languages.

2017-03-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/loc_rc6/.modulerc,
  testsuite/modulefiles/loc_rc6/1.2,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp: Correct alias/version resolution on
  avail command  List of version symbols was erroneous on an avail command in
  case a modulefile held symbols like default and was targeted by aliases.
  Avail output was showing the aliases holding the symbols instead of the
  modulefile.  getVersAliasList procedure was fixed to perform the alias
  resolution attempt in a second phase of the procedure, to let chance to
  retrieve symbols for the initial module name passed to the procedure.
  030-multiple, 040-wild and 050-long tests of the 90-avail suite has been
  enhanced with new tests to check this behavior. loc_rc6 modulefile has been
  added to the testsuite modulefiles to reproduce this use case.  Thanks to
  Bert Wesarg and Levi Morrison for reporting this issue.

2017-02-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/doc2www, www/Makefile, www/c/NEWS.html, www/{man =>
  c}/module.html, www/{man => c}/modulefile.html, www/index.html: www: include
  NEWS files on website  Include the NEWS file of C and Tcl versions to the
  documentation portal of Environment Modules.  Move C documentation to a 'c'
  directory to better distinguish from the Tcl documentation that is stored in
  the 'tcl' directory. Hard links are maintained on the Website not to break
  URL to man/module.html and man/modulefile.html pages.

  * NEWS: Add NEWS file to desc changes in modules-tcl rel

2017-02-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/doc2www, www/index.html, www/man/module.html,
  www/man/modulefile.html: www: add Mark Lakata to the copyright list

  * .gitignore, Makefile, contrib/gitlog2changelog.py: Add gitlog2changelog.py
  contrib script  Import gitlog2changelog.py GPL script to generate a
  ChangeLog file based on the commits of the git repository.  Add a
  'ChangeLog' rule to the Makefile.

  * contrib/doc2www, www/index.html, www/man/module.html,
  www/man/modulefile.html: www: update lic/copyright and version order  Adapt
  pages as suggested by R.K. and Kent: * update copyright for the recent years
  * add reference to LGPL as C version has some parts using this lic * reword
  C and Tcl version presentation * put C version first

2017-02-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, Makefile, contrib/doc2www, www/Makefile: www: Include Tcl
  version docs and papers/talk to website  Introduce 'doc2www' script to
  convert Tcl version documents to the website format, with usage of the
  'bootstrap' web toolkit.  Makefiles have been adapted to be able to generate
  these www documents from the source pod files and to copy existing txt and
  pdf files in the website tree.

  * www/index.html, www/man/module.html, www/man/modulefile.html,
  www/modules.css: www: Change website look and feel with Bootstrap  Adapt web
  pages to make use of the Bootstrap toolkit in order to get a modern and easy
  to maintain web style and content. Bootstrap also helps to get a responsive
  design so the website will adapt to the terminal used to read it.  Thanks to
  Aurelien Degremont for pointing me to the right tool for this task.

  * www/man/module.html, www/man/modulefile.html: www: Import and adapt last
  version of C manpages

2017-02-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * www/index.html, www/maillist.html: www: Refresh content all on single page

2017-02-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/paper/MC2_whitney_paper.pdf, doc/paper/Modules-Paper.pdf,
  doc/paper/absmod.pdf, doc/paper/user-setup.pdf,
  doc/talk/CSE-IT_modules_talk.pdf: doc: Import papers and talk avail on www

2017-02-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * www/index.html, www/maillist.html, www/man/module.html,
  www/man/modulefile.html, www/modules.css: www: Import current website

2017-02-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fix use of pwd in renderSettings proc  renderSettings was
  using the 'pwd' binary instead of the 'pwd' Tcl call, which cause issue when
  PATH is empty. Code has been adapted to reuse the value of the 'cwd' global
  variable or set its value by calling the 'pwd' Tcl function.

  * doc/source/module.pod: doc: Describe collection stuff

2017-01-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/Makefile, doc/source/diff_with_c-version.pod: doc: Introduce
  diff_with_c-version.pod document

  * doc/source/module.pod, doc/source/modulefile.pod: doc: use itemized-list
  for ENV and FILES sections  Adapt module.pod and modulefile.pod to use
  itemized-list rather than head2 for the content of their ENVIRONMENT and
  FILES sections. HTML rendering is clearer with a list than h2.

  * .gitignore, doc/Makefile, doc/html/common.css: doc: add a minimal css file
  to render html docs

2017-01-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Improve shebang to only search tclsh once if in PATH

2017-01-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/modulefile.pod, modulecmd.tcl,
  testsuite/modulefiles/info/mode3,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-unload2.exp: Add module-info mode check
  against 'remove' and switch' value  For compatibility with C-version, enable
  to check current 'module-info mode' against the 'remove' and 'switch' value.
  To achieve this change 'remove' is considered an alias of the 'unload'
  value. 'switch' is checked against the current 'module-info command'.
  084-info-mode-exp tests of 50-cmds suite have been adapted. In addition
  020-unload and 022-unload2 tests of 95-version suite have also been adapted
  as the modulefiles they check are using a 'module-info mode remove' test.

2017-01-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Handle sep line on avail/help/display with a proc

  * doc/source/modulefile.pod, modulecmd.tcl, testsuite/home/.module/infocmd,
  testsuite/home/.module/infocmdexp, testsuite/modulefiles/info/command,
  testsuite/modulefiles/info/commandexp,
  testsuite/modulefiles/inforc/.modulerc,
  testsuite/modules.50-cmds/281-info-modulerc.exp,
  testsuite/modules.50-cmds/282-info-command.exp,
  testsuite/modules.50-cmds/283-info-command-exp.exp,
  testsuite/modules.61-coll/020-savelist.exp: Introduce 'module-info command'
  Introduce g_commandNameStack variable, currentCommandName, pushCommandName
  and popCommandName procedures to implement a 'module-info command' that
  returns the name of the currently running module command.  This new
  mechanism enables to distinguish complex 'load' or 'unload' commands that
  cannot be determined with 'module-info mode' alone. For instance a
  modulefile can now be aware that a 'switch', a 'restore' or a 'purge'
  command is currently being run.  Add description of this new command to the
  modulefile documentation.  Add 282-info-command and 283-info-command-exp
  tests in 50-cmds and adapt 281-info-modulerc in 50-cmds and 020-savelist in
  61-coll.

  * doc/source/module.pod: doc: add missing 'aliases' and 'source'
  sub-commands

2017-01-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/inforc/.modulerc,
  testsuite/modulefiles/inforc/1.0, testsuite/modulefiles/inforc/2.0,
  testsuite/modules.50-cmds/281-info-modulerc.exp: Enable use of 'module-info'
  from modulerc  Give access to the 'module-info' procedure in slave interp
  when executing .modulerc or .version file.  Adapt push/pop mode calls to
  surround procedure calls that can execute a modulerc file to get there a
  coherent 'module-info mode' value.  Add 281-info-modulerc tests to the
  50-cmds suite.

2017-01-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/info/.modulerc,
  testsuite/modulefiles/info/specified,
  testsuite/modules.50-cmds/280-info-specified.exp: Fix 'module-info
  specified'  Introduce g_specifiedNameStack variable, currentSpecifiedName,
  pushSpecifiedName and popSpecifiedName procedures to implement a
  'module-info specified' that returns the modulefile name as specified on the
  command-line.  Add 280-info-specified tests to the 50-cmds suite.

  * modulecmd.tcl: Simplify code of cur/push/pop mode and modname procs

  * doc/source/module.pod: doc: add missing 'search' module sub-command

2017-01-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Display system command with no extra space if no arg

  * modulecmd.tcl: Display unsetenv command with 1 tab sep instead of 2  To
  get result aligned with the other commands.

  * modulecmd.tcl, testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.90-avail/030-multiple.exp: No exit raise on modfile error
  for avail/whatis cmds  Do not exit on an error raised by one modulerc or one
  modulefile for global commands avail, whatis or search that parse the
  content of all modulefile/modulerc found in the defined module paths.  By
  doing so results from these global commands will not be harmed if error
  exists in a few modulefiles. The content of these modulefiles will be
  ignored after the erroneous line. So in a whatis/search case if the
  module-whatis definition is set before the erroneous line, the modulefile
  will be taken into account. If the module-whatis definition is set after the
  erroneous line, the modulefile will be ignored.  To achieve this goal a
  'exit_on_error' argument has been added to the 'execute-modulerc' and
  'execute-modulefile' procedures. By default this argument is enabled but
  calls made from 'listModules' and 'cmdModuleSearch' disable it.  Add
  non-regression test to 055-whatis and 060-apropos in 70-maint suite and to
  030-multiple in 90-avail suite.

  * modulecmd.tcl, testsuite/modulefiles/bad/.modulerc,
  testsuite/modulefiles/bad/after, testsuite/modulefiles/bad/before,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp: Non-zero exit code when exiting
  from execute-mod procs  When a critical error is encountered when
  interpreting a modulefile or a modulerc from execute-modulefile or
  execute-modulerc procedures, exit as done elsewhere. Means call for error
  code rendering and raise error to top level, where exit command is called.
  A new procedure called 'exitOnError' is added and it is called by
  execute-modulefile and execute-modulerc procedures. Top level error
  management code now does not always print an error message as in this
  situation error message has already been displayed when the
  reportInternalBug procedure was called.  Add non-regression tests to
  190-load in 50-cmds suite and to 070-display and 080-help in 70-maint suite.

  * modulecmd.tcl: Refactor exit and ModulesVersion set of execute-modulerc
  Refactor the execute-modulerc procedure to handle exit in case of critical
  error as it is done on execute-modulefile procedure with the slave interp
  evaluation returning an errorVal. Then this errorVal is treated to check if
  a critical error as been encountered (errorVal=2).  To achieve this goal the
  way the ModulesVersion variable is set need to be changed as the slave
  interp now returns errorVal not ModulesVersion. A setModulesVersion
  procedure is added to enable the slave interp to pass the value of the
  ModulesVersion variable in the master interp context.

2017-01-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Retrieve help mode from module-info on execute-modulefile
  Remove the 'help' argument on the execute-modulefile procedure that was used
  to know the execution is made on a 'help' mode. Now that 'help' mode is
  pushed to the 'mode' stack, 'help' mode can be retrieved from 'module-info
  mode'.

2017-01-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Inhibit non-critical error report on avail/whatis
  Introduce the g_inhibit_errreport variable to inhibit the stderr display of
  non-critical error aka error reported through the reportWarning, reportError
  or reportInternalBug procedures.  inhibitErrorReport and reenableErrorReport
  procedures are added to enable or disable g_inhibit_errreport.  This new
  mechanism has been deployed on the 'avail', 'aliases' and 'whatis/search'
  commands, in order to avoid error flood when parsing all modulefiles or
  modulercs. This way, results from these commands will appear clearly to the
  user.

2017-01-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.50-cmds/210-exit.exp: Handle multiple
  lines of module-whatis for same modfile  Treat g_whatis as a list where each
  module-whatis text-line is appended to the previous lines.  In case of
  search, these lines are displayed only if they match the search pattern (to
  get same behavior as on C-version)  As a side effect, if no 'module-whatis'
  directive are found in a modulefile, this modulefile is never displayed on a
  'module whatis' call (same behavior as on C-version).  Adapt 210-exit whatis
  test in 50-cmds suite.

  * modulecmd.tcl: Handle multiple args passed to module-whatis cmd  When
  multiple arguments are provided to the module-whatis module command, join
  them with " " to get a line of text.

  * modulecmd.tcl: Return error on whatis if searched modfile not found  If
  'module whatis' command gets modulefiles as argument, if this or these
  modulefiles do not match any existing modulefile in the defined module path,
  then raise error as done on 'module load'.

2017-01-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/coll/a, testsuite/modulefiles/coll/b,
  testsuite/modulefiles/coll/c, testsuite/modulefiles/coll/d,
  testsuite/modulefiles/help/2.0, testsuite/modules.70-maint/010-init_ts.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/043-listno.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/048-listlongno.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/056-whatis-nullpath.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/095-cleanup.exp: testsuite: import and adapt
  70-maint suite  Also adapt 'coll' modulefiles to better cope with
  whatis/search commands.

2017-01-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Set a ref count of 1 for path without ref count  When a
  path is used in a variable but does not own a reference count assume this
  count is 1 rather than 999999999 to be able to unload it afterward which
  would not be possible if this path is referred 999999999 times.

2015-06-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * contrib/envml: Introducing envml utility  Add a 'envml' script tool which
  act as an application launcher where module commands are instancied to setup
  environment before launching the given application.

2017-01-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/010-environ.exp: testsuite: clean _modshare env
  vars before start  Unset any *_modshare environment variable before test
  start to get independent from the current environment situation.

  * Makefile: Ask for pwd physical resolution in Makefile  Use physical
  resolution (pwd -P) rather than logical resolution to be able to match
  result returned by the 'pwd' Tcl command.

2017-01-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Always register paths as absolute
  paths  Convert paths provided to be part of MODULEPATH environment variable
  in order to always register the corresponding absolute path. This way these
  paths become independent from the current working directory, which can be
  modified afterward by the user.  Use 'file join [pwd]' method rather than
  'file normalize' to get aboslute paths in order to preserve potential
  symlink used in the relative path hierarchy. Convertion also strips any
  extra '/' character and resolive "." and ".." components.
  readCollectionContent and cmdModuleUnuse procedures have also been adapted
  to keep compatibility with previous behavior where relative paths were able
  to be registered in MODULEPATH.  Adapt 61-coll suite and improve 030-use and
  070-unuse tests of 10-use suite.

2017-01-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.50-cmds/210-exit.exp: Inhibit next
  modfiles interp with 'exit' only if mode is load  Do not impact with 'exit'
  calls the remaining modulefiles to interpret in case of global non-load
  action like whatis, display or help.  Some tests have been added to 210-exit
  in order to check this behavior.

  * doc/source/modulefile.pod, modulecmd.tcl,
  testsuite/modules.50-cmds/087-info-shells-exp.exp: Add arg to test current
  {shell,shelltype}' in module-info  Add the possibility to pass a string to
  'module-info shell' and 'module-info shelltype' to get a boolean test on
  currently used shell or shelltype. This kind of behavior is already
  available on 'module-info mode' to test module current mode.  These features
  are supported by C-version even if not documented.  modulefile documentation
  and 087-info-shells-exp tests in 50-cmds suite have been adapted
  accordingly.

2017-01-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/modulefile.pod: doc: clarify 'module-info {symbols,version}'
  commands

2017-01-10  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/loc_def/default,
  testsuite/modulefiles/loc_def/truedef,
  testsuite/modules.20-locate/035-defname.exp: Do not always treat 'default'
  version-name as a symbol  Do not always treat 'default' version-name as a
  symbol where 'module/default' is equal to 'module'. Sometimes
  'module/default' can be a real modulefile thus it should be treated like
  that.  To do so a 'default_is_special' argument has been added to the
  'getModuleNameVersion' procedure in order to treat 'default' as a special
  version-name only when working with 'module-version', 'module-info version'
  and 'module-info symbols' commands.  Add 035-defname tests to 50-cmds suite
  to check this behavior.

2017-01-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp: Escape ':' in modshare var
  when used as path element in var  Some list variable may contain element
  with ':' in it, like for URL, separated by a character different than ':'.
  However corresponding modshare variable always use colon character as
  separator so we need to escape colon used as variable content in modshare
  variable to avoid issue.  To achieve that psplit and pjoin procedures are
  introduced as well as a charUnescaped procedure, which is the reverse of the
  already existing charEscaped procedure. With these new procedures path-like
  variable escape or unescape $g_def_separator character used in element of
  the variable when splitting or joining the whole variable.  Adapt
  042-append-delim, 047-app-del-undo, 052-prepend-delim and 057-pre-del-undo
  tests in 50-cmds suite to check colon character is correctly escaped in
  modshare variable.

  * modulecmd.tcl: Introduce charEscaped proc to escape char passed as arg
  Replace multiEscaped, doubleQuoteEscaped and singleQuoteEscaped procs by a
  single procedure that can escape any set of characters passed as argument.

2017-01-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/modulefile.pod: doc: adapt descrition of 'x-resource'

  * doc/source/modulefile.pod: doc: adapt calls used by 'system' and 'uname'

  * doc/source/modulefile.pod: doc: adapt list of mode returned by
  'module-info mode'

  * doc/source/module.pod: doc: add refresh alias on reload sub-command

2017-01-05  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.pod: doc: case when MODULERCFILE points to a directory

  * doc/source/module.pod, doc/source/modulefile.pod: doc: add --default and
  --latest avail switches

  * doc/source/module.pod: doc: add --help, --version and --debug switches

  * doc/source/module.pod: doc: switch command accepts only one argument

  * doc/source/module.pod: doc: reference newly supported shells (fish, tcl,
  lisp)

  * init/python.in: init: fix TCLSH typo in python script

2016-12-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/source/module.pod, doc/source/modulefile.pod: doc: improve docs
  readability  Adopt and apply writing conventions found especially in
  man-manpages(7) to improve documents readability:  * always refer to
  'modulefile' or 'modulefiles' with I<> pod code * refer to other manpages
  with B<> pod code * refer to filename or pathname with F<> pod code * refer
  to environment variable with B<> pod code * no '$' before environment
  variable except if its value is referred * no escaping '{}' of environment
  variable * use item list to describe ordered list * use item list to
  describe all command-line switches, all module sub-commands and all
  modules-specific Tcl commands * refer to command-line switches, module
  sub-commands, modules-specific Tcl commands, Modules variables and Modules
  subroutines with B<> pod code * use normal font for arguments on item list *
  refer to arguments of current command-line switch, module sub-command or
  modules-specific Tcl command with I<> pod code * express 1+ arguments with a
  'arg...' syntax * format pod source with 'fmt' to set maximum line witdh to
  78 chars * fix double spaces '  ' or end of line extra space found in
  paragraphs

  * doc/source/module.pod, doc/source/modulefile.pod: doc: remove stuff
  specific to C-version  Changes made on module.pl: * remove text related to
  the 'modulesbeginenv' feature * remove 'clear' sub-command * change 'update'
  sub-command into 'reload and adapt description  Changes made on
  modulefile.pl: * remove 'module-info flags' modules-specific Tcl command *
  remove 'module-trace' modules-specific Tcl command * remove 'module-user'
  modules-specific Tcl command * remove 'module-log' modules-specific Tcl
  command * remove 'module-verbosity' modules-specific Tcl command

  * doc/source/module.pod, doc/source/modulefile.pod: doc: syntax fixes and
  import recent changes on C doc

2017-01-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * doc/Makefile, doc/source/{module.pl => module.pod},
  doc/source/{modulefile.pl => modulefile.pod}: doc: use .pod extension for
  POD documents  This way these files are automatically recognized as POD
  files and the appropriate syntax highlight mode is automatically set.

2017-01-02  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * Makefile, doc/Makefile: Create a doc-specific Makefile  Separate
  documentation generation in a dedicated Makefile put in the doc directory.
  Generate documentation in a more 'Makefile' fashion, with a target per
  document file.

2017-01-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .gitignore, doc/html/module.html, doc/html/modulefile.html,
  doc/man/man1/module.1, doc/man/man4/modulefile.4: Remove generated documents
  from git repository  Clear HTML and MAN pages from the repository as they
  are generated content from POD files. This way git commits on documentation
  are clearer as they only contain changes on POD files.  Add rules to
  .gitignore to stop tracking generated HTML and MAN documents in repository.

2016-12-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, notdone/modules.50-cmds/170-swap.exp,
  notdone/modules.50-cmds/175-swap2.exp, testsuite/modulefiles/append/1.1,
  testsuite/modulefiles/prepend/1.1, testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/172-swap-app-delim.exp,
  testsuite/modules.50-cmds/173-swap-app-delim.exp,
  testsuite/modules.50-cmds/175-swap2.exp,
  testsuite/modules.50-cmds/177-swap-prep-delim.exp,
  testsuite/modules.50-cmds/178-swap-prep-delim.exp: Make 'switch' command
  handle a single argument  On a 'module switch [mod1] mod2', If 'mod1' is not
  specified, then it is assumed to be the currently loaded module with the
  same root name as 'mod2'.  Introduce a 'getLoadedWithClosestName' procedure
  to look at currently loaded modules and return the one with the closest name
  to the name passed as argument.  Import and adapt 170-swap,
  172-swap-app-delim, 173-swap-app-delim, 175-swap2, 177-swap-prep-delim and
  178-swap-prep-delim tests to the 50-cmds suite.

2016-12-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Make 'switch' command consistent  Switch command were
  previsouly setting 'new' as 'old' and 'old' as 'new' when 'new' is detected
  loaded. This behavior led to inconsistency especially when the same 'module
  switch old new' command is called twice. First time 'old' is loaded and
  'new' is unloaded. Then for the second call 'old' is unloaded and 'new' is
  loaded, and so on. In this case, the result of the switch command depends on
  the current situation which confuses most persons using it.  This commit
  makes the switch command idempotent by always ending up with 'old' unloaded
  and 'new' loaded, whatever the starting situation is.

2016-12-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, notdone/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/210-exit.exp: Add support for 'exit' command in
  modulefile  Add support for use of 'exit' command within modulefile as
  described in modulefile(4) man page. This command will cause the immediate
  cessation of this module and any additional ones on the command line. This
  module and the subsequent modules will not be listed as loaded. No
  environment commands will be performed in the current module.  To achieve
  that a 'exitModfileCmd' procedure is added to superseed the 'exit' command
  during modulefile interpretation. When called this procedure sets a flag
  that inhibit further modulefile interpretation.  Import and adapt 210-exit
  tests in 50-cmds suite.

  * init/bash_completion, init/tcsh_completion, modulecmd.tcl,
  notdone/modules.50-cmds/078-refresh.exp,
  testsuite/modules.50-cmds/078-refresh.exp: Add 'refresh' command as alias on
  'reload' command  Add a 'refresh' command as available on C-version but
  instead of reloading the volatile components (ie. shell aliases) only, here
  we unload then reload all the currently loaded modules. This behavior is
  different than on C-version but it ends with same results : shell aliases
  are refreshed in sub-shells.  Import and adapt 07-refresh tests in 50-cmds
  suite.

2016-12-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, .../modules.50-cmds/100-loglevel.exp,
  .../modules.50-cmds/101-badfac.exp, .../modules.50-cmds/110-verbose.exp,
  .../modules.50-cmds/115-verbose-msg.exp: Add dummy
  module-{log,trace,user,verbosity} procs  Add dummy procedures for the
  module-log, module-trace, module-user and module-verbosity commands
  available on C-version. These commands do not seem relevant to be
  implemented on Tcl-version of module, but having dummy procedure for them
  enable support for modulefiles using these commands. Without dummy
  procedures these modulefiles raise error as the commands are not known.  The
  4 dummy procedures report a warning message to let the user know that even
  if the modulefile has been loaded/unloaded/etc, the module-log,
  module-trace, module-user or module-verbosity calls were not interpreted.
  Import and adapt 100-loglevel, 101-badfac, 110-verbose and 115-verbose-msg
  tests in 50-cmds suite.

2016-12-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.50-cmds/140-system.exp: Adapt 'system' to
  behave like described on manpage  Previously the 'system' modulefile command
  was adding the specified string to the list of things to interpret on
  stdout. This commit aligns the behavior of the 'system' command on the one
  implemented on Modules C-version which is documented on modulefile(4) man
  page.  Now 'system' passes string to the 'exec' Tcl procedure with stdout
  redirected to stderr since stdout would be parsed by the evaluating shell.
  The exit status of the executed command is returned.  Adapt '140-system'
  test in 50-cmds suite accordingly.

2016-12-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * notdone/modules.50-cmds/120-prereq-full.exp,
  notdone/modules.50-cmds/130-conflict-full.exp,
  notdone/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp: testsuite: import
  'conflict' and 'prereq' tests in 50-cmds suite

  * modulecmd.tcl, notdone/modules.50-cmds/190-load.exp,
  .../modules.50-cmds/150-module.exp, testsuite/modules.50-cmds/190-load.exp:
  Fix 'module list' when module loaded with full path  On Tcl-version,
  modulefile loaded by giving its full path has its name equal to its full
  path since module name and version cannot be distinguished from the path. On
  C-version, module name equals to the tail of the full path.  Also import and
  adapt 'module' and 'load' tests in 50-cmds suite.

2016-12-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Disable g_force to avoid loading already loaded mod  In
  order to get closer to C-version, disable g_force by default to avoid
  loading a modulefile already loaded. This behavior also avoid path element
  reference counting to get increased when the same module is asked twice for
  load.  Thus with cleaner path element reference count, automatic modulefile
  dependency management is made possible.

2016-12-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * notdone/modules.50-cmds/080-info-name.exp,
  notdone/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp: testsuite: import
  module-info name/isloaded in 50-cmds suite

  * modulecmd.tcl, testsuite/modulefiles/info/mode1,
  testsuite/modulefiles/info/mode3, .../modules.50-cmds/083-info-mode.exp,
  .../modules.50-cmds/084-info-mode-exp.exp: Clarify module-info 'mode' option
  Fix mode setup during a 'help' command and import info-mode relative tests
  in 50-cmds suite.  module-info non-regression tests have been adapted to
  match behavior of Tcl-version: * during a 'help' command, stdout output of
  ModulesHelp procedure is not redirected to stderr as done on C-version * on
  an 'unload' command, module-info mode is equal to 'unload' and not 'remove'
  * on a 'switch' command, module-info mode is equal to 'unload' then 'load'
  and not 'switch1', 'switch2' and 'switch3' * on a 'switch' command,
  module-info mode never equals to 'switch'

2016-12-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/info/mode5,
  .../modules.50-cmds/081-info-user.exp,
  .../modules.50-cmds/082-info-user-exp.exp,
  .../modules.50-cmds/085-info-flags.exp: Clarify module-info 'flags' and
  'user' options  'flags' and 'user' are C-version specific options and they
  are not relevant for Tcl-version. So they are present on Tcl-version to
  avoid breaking modulefile using them but always return false or an empty
  string to reflect the fact that these options are unmanaged here.  Import
  and adapt info-user and info-flags non-regression tests in 50-cmds suite.

2016-12-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, notdone/modules.50-cmds/042-append-delim.exp,
  notdone/modules.50-cmds/045-append-undo.exp,
  notdone/modules.50-cmds/047-app-del-undo.exp,
  notdone/modules.50-cmds/050-prepend.exp,
  notdone/modules.50-cmds/052-prepend-delim.exp,
  notdone/modules.50-cmds/055-prepend-undo.exp,
  notdone/modules.50-cmds/057-pre-del-undo.exp,
  notdone/modules.50-cmds/060-remove.exp,
  notdone/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp: Handle empty or separator
  path on add-path/unload-path  Improve add-path and unload-path to handle
  empty path {}, that can be added or removed from a path list like on
  C-version.  Also if provided path is equal to the separator string, like
  ":", an error is raised as this kind of path cannot be handled in path list
  variables. This behavior here is different than on C-version where path
  equals to ":" can be added or removed to path list variables.  Import or
  adapt add-path and unload-path relative tests (04*-append, 05*-prepend and
  06*-remove) in 50-cmds suite.

2016-12-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, notdone/modules.50-cmds/025-setenv-undo.exp,
  notdone/modules.50-cmds/035-unsetenv-undo.exp,
  notdone/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp: Improve unsetenv for unload
  and display modes  On unload mode, delete environment variable targeted by
  an unsetenv directive if no value has been provided along.  On display mode,
  print environment variable value if any has been passed to unsetenv
  directive.  Import 025-setenv-undo, 035-unsetenv-undo and 036-unsetenv-x
  tests in 50-cmds suite.

2016-12-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/040-load.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/089-info-type.exp,
  testsuite/modules.50-cmds/195-load-recurs.exp,
  testsuite/modules.50-cmds/197-load-lots.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/240-chdir.exp,
  testsuite/modules.50-cmds/250-x-resource.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.91-sort/040-load.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp: Enclose tcl variable set
  within double quotes  When modules is used within Tcl code, value to set to
  a variable were previously "double quote escaped" but not enclosed by double
  quotes at set time.  By enclosing values with double quotes, complex values
  can be managed like for instance those including whitespaces.  Fix all
  Tcl-relative non-regression tests in testsuite.

  * modulecmd.tcl, notdone/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp: Fix perl quoting style for
  variable set  Import 'setenv-eschars' test in 50-cmds suite and by the way
  fix quoting style for perl when setting variable. Single quotes are used to
  set variable, so single quotes should be escaped rather than double quote.

2016-12-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, notdone/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/017-use-undo.exp: Call unuse instead of use on
  module unload  When modulefiles define 'module use' calls, 'module unuse' is
  called when current mode is 'unload'. No change made to 'module unuse'
  calls, 'module unuse' is also called when mode is 'unload' (same behavior as
  'module unload').  On 'display' mode, 'module use' and 'module unuse' calls
  are now reported (displayed).  Import 'use-undo' tests in 50-cmds suite.

  * notdone/modules.50-cmds/070-alias-proc.exp,
  notdone/modules.50-cmds/075-alias.exp,
  notdone/modules.50-cmds/076-alias-sub.exp,
  notdone/modules.50-cmds/077-alias-undo.exp,
  notdone/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp: testsuite: import 'alias'
  tests in 50-cmds suite

2016-12-04  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * notdone/modules.50-cmds/090-uname-proc.exp,
  testsuite/modules.50-cmds/090-uname-proc.exp,
  .../modules.50-cmds/095-uname.exp,
  .../modules.50-cmds/099-uname-cleanup.exp: testsuite: import 'uname' tests
  in 50-cmds suite

2016-11-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, notdone/modules.50-cmds/220-continue.exp,
  notdone/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp: Fix use of 'continue' command in
  modulefile  This commit also add continue-specific non-regression tests in
  modules.50-cmds suite.

  * modulecmd.tcl, notdone/modules.50-cmds/240-chdir.exp,
  testsuite/modules.50-cmds/240-chdir.exp: Add support for 'chdir' command in
  modulefile  This commit also add chdir-specific non-regression tests in
  modules.50-cmds suite.

  * modulecmd.tcl, notdone/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/200-break.exp: Fix use of 'break' command in
  modulefile  This commit also add break-specific non-regression tests in
  modules.50-cmds suite.

2016-11-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/averssort/.modulerc,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/060-empty.exp,
  testsuite/modules.91-sort/010-init_ts.exp,
  testsuite/modules.91-sort/020-avail.exp,
  testsuite/modules.91-sort/030-whatis.exp,
  testsuite/modules.91-sort/999-cleanup.exp: testsuite: improve 90-avail and
  91-sort for alias/version  Add tests to 90-avail and 91-sort suites to check
  correct display of aliases and versions on module avail command.

2016-11-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: No display of modulepath header if no module found in it
  On module avail, search and aliases commands the header for modulepath where
  no module has been found (because there is no module, alias or version in
  them or nothing matches current search expression) is not displayed anymore.

2016-10-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Remove call to cmdModuleAliases when asked for avail
  Module aliases are now displayed along regular modulefiles when
  cmdModuleAvail is processed. Thus call to cmdModuleAliases is now useless
  when avail action is asked.

2016-10-26  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Display aliases set in global/user modulerc on avail  Fill
  a g_rcAlias array with all aliases defined from the global or user modulerc.
  Then adapt listModules procedure to be able to display only the aliases
  defined from the global or user modulerc (no directory lookup) when search
  argument is set to "rc_alias_only".  cmdModuleAvail now starts by displaying
  aliases set in the global or user-specific modulerc in a dedicated
  "global/user modulerc" list.  By doing so all aliases defined are now
  displayed on module avail output (even those defined in the global or user
  modulerc).

2016-10-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.90-avail/050-long.exp: Include aliases as
  part of listModules results  Adapt listModules procedure to include to the
  results returned all the module aliases defined through the analyzed
  directory. By doing so a module avail or search commands automatically
  return all the aliases defined in addition to regular modulefiles to get a
  complete view of what is available.  In module-alias procedure the full path
  name of the file that declared an alias is registered in a g_sourceAlias
  array. In listModules this array is looked at to distinguish the aliases
  coming from the currently analyzed directory.  Aliases are displayed from
  the module path where they are defined. A "@" symbol is appended to the
  alias name, in the same way module-version are displayed, in order to be
  able to distinguish an alias from a regular modulefile. "@" has been
  retained as symbol to qualify module aliases as this symbol is used by "ls"
  command to qualify symbolic links.  When --long display format is asked, the
  target of the alias is printed after the alias name. No last modification
  time is displayed as it has no meaning for a module alias.

2016-10-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fix default module test based on '(default)' tag  As
  default tag may not be the only one tag applying to a module (other versions
  may also be part of the tag list), default version tests, that were only
  comparing the '(default)' string, have been adapted to correctly handle
  cases where multiple tags apply to a default module.  On
  resolveModuleVersionOrAlias procedure, test on '(default)' string has simply
  been removed since name passed to the procedure does not contain anymore
  tags in any situation.  On getSimplifiedLoadedModuleList procedure, call to
  listModules procedure has been revised to only ask for default versions,
  this way there is no need to test a '(default)' string since all results
  returned are default versions.

2016-10-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.90-avail/050-long.exp: Handle
  show_modtimes directly in listModules  Adapt cmdModuleAvail and listModules
  procedures to handle show_modtimes treatment directly within listModules
  rather than in cmdModuleAvail. This way there is no need to loop over
  listModules results and call getPathToModule on each of them. File location
  is already known by listModules, so file modification time query is easy to
  make there.  As a consequence avail long output is directly managed by
  listModules. This output structure has been improved to let more space to
  display module tag list. Moreover when terse mode is used, tag list is no
  more separated by a space from module name (same behavior as C-version).
  Align list and savelist long output the improved output structure applied to
  avail long output.

2016-10-12  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Make listModules show_flags even when filter set  Previous
  listModules code was not complying with the show_flags directives when a
  filter were set like "onlydefaults" or "onlylastest". This commit improves
  this by centralizing the code handling the show_flags directives.

2016-10-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Merge listModules proc flag_default_* args  Simplify
  management of flag_default_dir and flag_default_mf arguments of listModules
  procedure by merging both args in a show_flags argument and set local value
  for reporting flags of directories or modulefiles based on the value of this
  show_flags argument and global variables flag_default_dir and
  flag_default_mf.

  * modulecmd.tcl: Remove listModules proc full_path argument  Simplify
  listModules procedure by removing the full_path argument that was in all
  cases disabled.

2016-10-08  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Render error on display/help command  Add error rendering
  directive when calling display or help commands as they can hit a magic
  cookie or a not found errors when processing name passed as argument.

2016-09-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fix module-info symbols resolution  Return all symbols
  defined by calling the getVersAliasList procedure.  This procedure has been
  enhanced to first attempt an alias resolution on the name passed to it. Then
  each time a version or a default is found a recursive call is made on this
  new name to get all versions or default linked to the initial name.
  getVersAliasList has also been enhanced to pass and get a list of already
  resolved symbols for the current resolution in order to detect infinite
  resolution loop.  Results returned by getVersAliasList are now sorted using
  the dictionnary-style sort as already performed by listModules.  All these
  improvements made to the getVersAliasList will benefit to the listModules
  procedure so "avail" command will return more accurate versions and default
  information.

2016-09-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Improve .modulerc/.version handling in getPathToModule
  Adapt getPathToModule to parse .modulerc file at each level of the specified
  module in order to be able to resolve any alias that may be defined within
  the module directories. Means if module name "mod/sub1/sub2" is passed to
  getPathToModule, the procedure will parse any .modulerc file in "mod",
  "mod/sub1" and "mod/sub1/sub2" directories (if these dirs exist) then it
  will attempt to resolve module name with aliases and version found.  To
  behave like Modules-C, if both a .modulerc and a .version file exist for the
  module name passed to getPathToModule, .modulerc is parsed then .version. In
  this situation a default value set from .version will win over a default
  value set in .modulerc. Same kind of change has been applied to the
  listModules procedure.  A new argument named "search" has been added to the
  listModules procedure to be able when called by getPathToModule with a
  "no_depth" value to only get the content of a directory and not its sub
  elements as sub-directory resolution, .modulerc and .version are handled
  within getPathToModule.

2016-09-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fix module-info version resolution  Call for
  resolveModuleVersionOrAlias procedure to deeply resolve name provided by
  recursively looking at alias or version structures.  Also improve
  module-version procedure to raise a warning message in case of duplicate
  version symbol is found.

2016-09-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fix module-info alias resolution  Call for
  resolveModuleVersionOrAlias procedure to deeply resolve name provided by
  recursively looking at alias structures.  Improvement is made here to the
  resolveModuleVersionOrAlias procedure in order to be able to only look for
  alias (and not alias and version) when attempting resolution.  A g_aliasHash
  array is introduced here to be able to reversely look at alias definition as
  Modules-C does. module-alias procedure has been adapted to fill this new
  structure and resolveModuleVersionOrAlias makes use of it if alias is
  searched and not found in g_moduleAlias array.

2016-09-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Register alias and version by the short module name  Store
  aliases and versions by the short module name rather than full module path
  to get closer to the Modules-C behavior on alias and version management. As
  a consequence an alias defined in a module path can apply to a module stored
  in another module path. But this behavior is required to make alias defined
  in global modulerc functional.  A getModuleNameVersion procedure is
  introduced to determine with a name provided as argument the corresponding
  module name, version and name/version. Module name is guessed from current
  module name when shorthand version notation is used. Both name and version
  are guessed from current module if name provided is empty.

2016-09-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Improve resolveModuleVersionOrAlias proc to detect loop
  Adapt resolveModuleVersionOrAlias procedure to resolve only one name at a
  time and pass a list of already resolved symbols for the current resolution
  in order to detect infinite resolution loop.  When infinite resolution loop
  is detected error message is raised and returned value is set to "*undef*"
  to behave like Modules C-version.

2016-09-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Remove useless alias/version resolution in module proc
  Aliases and versions are solved when getPathToModule proc is called and
  getPathToModule is called by all command proc that need to resolve an alias
  or a version.  So alias and version resolution is not required at the
  beginning of the module procedure. Resolving any argument to the module
  procedure as alias or version was also potentially erroneous.

2016-09-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Source $MODULERCFILE/modulerc when $MODULERCFILE is dir  In
  order to behave like C-version, if the $MODULERCFILE variable is set and
  points to a directory, source the "modulerc" file in it instead of trying to
  source the directory (which led to error).

2016-09-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * .../modules.20-locate/010-init_ts.exp,
  .../modules.20-locate/020-fqual.exp, .../modules.20-locate/030-defvers.exp,
  .../modules.20-locate/040-alias.exp, .../modules.20-locate/045-symvers.exp,
  .../modules.20-locate/046-getsym.exp, .../modules.20-locate/047-symerrs.exp,
  .../modules.20-locate/048-symexec.exp, .../modules.20-locate/050-locrc.exp,
  .../modules.20-locate/055-locrcerrs.exp, .../modules.20-locate/060-rc.exp,
  .../modules.20-locate/065-rcerrs.exp, .../modules.20-locate/070-homerc.exp,
  .../modules.20-locate/095-cleanup.exp: testsuite: import and adapt 20-locate
  tests  Import the 20-locate test directory in use in Modules-C testsuite,
  that was previously put aside for Modules-TCL. Adapt syntax of tests and
  results to fit the output of Modules-TCL which sometimes slightly differ
  from the C version.  At this stage, most of the tests from this 20-locate
  directory are failling as aliases and versions support in Modules-TCL is not
  as complete as it is in C version. Next commits will close the gap between
  the two Modules flavors.

2016-09-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp: testsuite: fixing deep/020,
  avail/030 and avail/040  * Fix typo error on 80-deep/020-load test
  (incorrect result were expected) * Adapt 90-avail/030-multiple result syntax
  not to conflict with regular expression special character like '(' * Adapt
  90-avail/040-wild to use terse mode to not be dependent of local terminal
  size

2016-11-11  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl, testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp: Make it so you can do module avail
  un  Also fixed a couple of test cases.

2016-11-03  Kent Mein <mein@cs.umn.edu>

  * init/.gitignore, init/Makefile, modulecmd.tcl, testsuite/not_installed:
  Added missing fish shell to init Makefile  In the process saw a typo in
  not_installed fixed that as well. Also updated the .gitignore file.  This
  bug was found by Michael Gooch.

2016-08-27  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Compare strings with 'eq' instead of '==' in
  execute-modulefile  '==' operator is meant for numerical comparison so it is
  more correct and faster to use 'eq' operator when comparing strings.

  * modulecmd.tcl, testsuite/modules.00-init/071-args.exp: Check each command
  receives the correct number of arg  Improve module procedure to check for
  each module command that the correct number of argument are provided. If an
  unexpected number of argument is provided an error is raised as when an
  invalid command name is specified. This way module exit with an error code
  and an error is rendered in order to be checked from the shell.

2016-08-21  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.90-avail/020-single.exp: Improve
  column-mode in displayElementList  Change way to compute rows*cols display
  grid in order to maximize the number of column to display per line. To do so
  a width is computed for each column instead of having each column width
  based on the largest one.  The new code takes a bit more time to proceed (as
  there is more stuff to compute) but the additionnal time taken is not really
  discernable from the user perspective: on a 'module avail' containing ~10
  paths and ~400 modulefiles, there is less than 0.1 second extra time.  As
  display is now denser, two spaces are now used instead of one to separate
  elements.  Thanks to Aurelien Degremont for crafting the right algorithm for
  this.

  * modulecmd.tcl, testsuite/modules.91-sort/030-whatis.exp: Merge list
  printing codes under displayElementList  Set a common procedure to manage
  the display of list of elements: displayElementList. Lists can be displayed
  in a column fashion or with only one element per line. Elements displayed
  may be prefixed by their number. Also a header can be printed on top of the
  list.  Adapt cmdModuleList, cmdModuleSavelist, cmdModuleSearch,
  cmdModuleAvail and cmdModuleAliases to use this new procedure.  With a
  single set of code to manage this aspect it will be easier to improve it and
  all commands calling it will automatically benefit from these improvements.

2016-08-20  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.00-init/015-version.exp,
  testsuite/modules.00-init/090-switches.exp: Put all command-line parsing
  under catch protection  Make command-line option parsing benefit from the
  catch (+reportError +exit 1) applied to command parsing and running. This
  way it produces same kind of error behavior when an invalid option is typed
  as when an invalid command is typed.  Also put shell name parsing first in
  order to be able to renderError appropriately when an invalid option is
  typed. Elsewhere the puts of /bin/false on stdout was not made as no shell
  were set.  An invalid option containing only one '-' as first character will
  now also produces an error. Before that only invalid options starting with
  '--' were treated as error.  Improve testsuite on option treatment. Test
  long and short versions of these options and test the returned output.

2016-08-19  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.00-init/070-command.exp,
  testsuite/modules.00-init/090-switches.exp: Merge main command handling in
  module proc  Make module command handling appear in a single location, the
  module procedure, rather than having a duplication of code in the main
  section.  This modification simplifies the addition of new commands or the
  adaptation of existing commands as everything has to be done only once.  Now
  calling module from a modulefile or a modulerc benefits from the same
  command shortcuts than when it is called from the command line.  Moreover do
  not print anymore the module usage message when an invalid command is typed,
  as this large message often hide the error printed on the first line. An
  advice to type "module --help" is printed instead.

  * modulecmd.tcl: Simplify parsing of command switch arguments

  * modulecmd.tcl: Harmonize usage of exit when error occurs  When error
  occurs and exit is called, always quit with the same error code: 1.  Add a
  call to "exit 1" when error is caught in main section when processing module
  command.  Remove use of exit in cmdModuleInit procedure, replaced by call to
  reportErrorAndExit, which will be caught at top level and go through the
  "exit 1" added above.  End main section with an "exit 0" to explicit
  everything went well.

  * modulecmd.tcl: Harmonize reportErrorAndExit messages  As done for the
  other report* procedures, here we harmonize some reportErrorAndExit messages
  to something simpler and clearer.  There is no need to make
  reportErrorAndExit call to reportError instead of using "error" build-in
  proc since error proc raise a message which is caught and output by
  reportError in the end.

2016-08-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Standardize reportInternalBug procedure  Adapt
  reportInternalBug procedure to make it call "report" rather than
  re-implementing a "puts stderr" procedure. This way all messages printed to
  stderr pass through the "report" procedure.  Take also this opportunity to
  standardize some messages to something simpler and clearer.

  * modulecmd.tcl, testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp: Standardize reportError procedure
  Add an "ERROR: " prefix to all messages put through reportError to make
  these error messages look similar.  Take also this opportunity to
  standardize all error messages to this new single prefix, moving away from
  the inherited "+(0):ERROR:0: " prefix to something simpler and clearer.

  * modulecmd.tcl: Standardize reportWarning procedure  Adapt reportWarning
  procedure to make it call "report" rather than re-implementing a "puts
  stderr" procedure. Also add a "WARNING: " prefix to all messages put through
  reportWarning to make this procedure different from the report procedure.
  Take also this opportunity to standardize some warning messages and to
  change some 'reportError "WARNING' calls into reportWarning calls where it
  was not necessary to raise the error counter (as it is warnings not errors).

  * modulecmd.tcl: Remove setup of global variables not accessed in procs

  * modulecmd.tcl: Add short option -d for --delim on prepend-path

2016-08-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.00-init/030-shells.exp: Introduce
  getModulePathList proc  Defines a getModulePathList procedure that returns a
  list of the module paths by parsing the MODULEPATH environment variable.
  This new procedure enables to gather in a single location the code to parse
  MODULEPATH, thus it removes the need for many procedures to know about "env"
  and "g_def_separator" global variables.  getModulePathList procedure also
  enables with its "behavior" parameter to directly exit on error when
  MODULEPATH is not set. By default, it returns an empty list. The
  "exiterronundef" behavior allows to closely match previous behavior, when
  $env(MODULEPATH) were accessed without being defined.

  * modulecmd.tcl: Introduce getLoadedModuleList proc  Defines a
  getLoadedModuleList procedure that returns a list of the loaded modules by
  parsing the LOADEDMODULES environment variable.  This new procedure enables
  to gather in a single location the code to parse LOADEDMODULES, thus it
  removes the need for many procedures to know about "env" and
  "g_def_separator" global variables.

  * modulecmd.tcl: Remove separator optional parameter where useless  An
  optional parameter named "separator" was specified on many procedures but
  calls to these procedures never set this parameter. This commit removes
  these unused "separator" parameters to improve code clarity and it will help
  to provide in further commits generic procedures to access environment
  state.

2016-08-16  Romain Fihue <romain.fihue@cea.fr>

  * modulecmd.tcl, testsuite/home/.module/{coll4 => coll4.target},
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/050-saverm.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Introduce collection target
  concept  Collection directory may sometimes be shared on multiple machines
  which may use different modules setup. For instance modules users may access
  with the same HOME directory multiple systems using different OS versions.
  When it happens a collection made on machine 1 may be erroneous on machine
  2.  To handle this use case, we introduce here the concept of target for
  module collections. By setting the MODULES_COLLECTION_TARGET environment
  variable to something that can make a distinction between machines that are
  incompatible with each other, only collections matching this target will be
  valid on it.  When a target is set, only the collections made for that
  target will be available to restore, list, show, rm, and saving will
  register the target footprint (collection filename will be suffixed with
  ".$env(MODULES_COLLECTION_TARGET)". Collection target is not involved when
  collection is specified as file path on show, restore and save commands.
  For example, the MODULES_COLLECTION_TARGET variable may be set with results
  from commands like lsb_release, hostname, dnsdomainname, etc.

2016-08-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash_completion, init/tcsh_completion, modulecmd.tcl,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/060-saveshow.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Introduce saveshow command  Gives
  the ability to display the content of a given collection.  61-coll testsuite
  is adapted to test this new command.

2016-08-10  Romain Fihue <romain.fihue@cea.fr>

  * modulecmd.tcl, testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/050-saverm.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Save and restore collection
  specified as file path  Until now, it was only possible to save and restore
  a collection located in default collection directory (under $HOME/.module).
  With this commit, a file path can be specified to the save and restore
  commands.  On the contrary, saverm command has been enforced to use a name
  to target the collection to remove in order to avoid this command to be able
  to delete any file.  61-coll testsuite is adapted to test this new use case.

2016-08-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash_completion, init/tcsh_completion, modulecmd.tcl,
  testsuite/modules.61-coll/050-saverm.exp: Introduce saverm command  Gives
  the ability to remove a given collection (it deletes corresponding file)
  61-coll testsuite is adapted to test this new command.

2016-08-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Refactor collection code a little bit  Introduce a
  getCollectionFilename procedure to query collection filename and simplify
  error management code in cmdModuleSave and cmdModuleRestore to improve code
  readability.  Also set separate procedures to generate the content of a
  collection (formatCollectionContent procedure) and to read a collection file
  (readCollectionContent procedure) in order to prepare further enhancements
  on module collections.

2016-08-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Make use of lassign build-in proc  lassign build-in
  procedure has been introduced in Tcl8.5 and provides an easier way to manage
  list results like those returned by getPathToModule and
  getMovementBetweenList.  For compatibility with Tcl8.4 and earlier, a
  lassign procedure is provided here (set if not defined). See [1] for an
  overview of lassign implementations and performances.  [1]
  http://wiki.tcl.tk/1530

2016-08-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/home/.module/coll2: Restore collection with
  multiple mods specified on single line  Sometimes people manually edit their
  collection and may be tempted to specify multiple modules to load or
  multiple paths to use on a single line, for instance:  module use --append
  path1 path2 module load mod1 mod2 mod3  This commit makes this use case
  possible by splitting content read from collection file.  61-coll testsuite
  has been adapted to test this use case (collection "coll2" has been changed
  to use this kind of syntax).

2016-08-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/home/.module/coll4,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Fix restore when there is no
  module to load in collection  Some uninitialized variable was causing issue
  when trying to restore a collection not defining any module to load.
  modules.61-coll testsuite has been adapted accordingly by introducing a
  "coll4" collection that only set paths to use, no module to load.  Thanks to
  Nicolas Wiart for pointing this out.

2016-08-07  Aurelien Cedeyn <aurelien.cedeyn@cea.fr>

  * modulecmd.tcl, testsuite/home/.module/coll3,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Fix restore when collection fully
  rewind module paths  When restoring a collection which requires to unuse all
  currently set module paths before adding new ones, it previously raised
  error trying to access the empty env(MODULEPATH) variable.  Fix that and
  work-around getSimplifiedLoadedModuleList procedure with helper list
  provided as argument to be able to compute simplified version of loaded
  modules even if there is no MODULEPATH set to look at all existing versions
  for a module.  modules.61-coll testsuite has been adapted accordingly by
  introducing a "coll3" collection that requires to unuse all previously
  loaded paths when restoring.

2016-08-07  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/home/.module/coll1, testsuite/home/.module/coll2,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/999-cleanup.exp: Correctly restore multiple paths
  with order preservation  cmdModuleUse prepends paths by default so
  cmdModuleRestore command was previously prepending new paths instead of
  appending them. To guaranty path order cmdModuleRestore now calls
  cmdModuleUse with --append flag by default.  To keep the ability to directly
  source a collection file from a shell, now cmdModuleSave adds --append flag
  to the 'module use' lines it records. cmdModuleRestore treats this flag if
  present, but adds --append if no flag found to keep compatibility with
  previously generated collections.  modules.61-coll testsuite is adapted
  accordingly to test collections containing more than one module path and to
  test previous and new style of 'module use' recorded lines.

2016-08-06  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modules.61-coll/030-save.exp: Raise error if try
  to save an empty environment

  * testsuite/home/.module/coll1, testsuite/home/.module/coll2,
  testsuite/home/.module/default, testsuite/modulefiles/coll/a,
  testsuite/modulefiles/coll/b, testsuite/modulefiles/coll/c,
  testsuite/modulefiles/coll/d, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.61-coll/010-init_ts.exp,
  testsuite/modules.61-coll/020-savelist.exp,
  testsuite/modules.61-coll/030-save.exp,
  testsuite/modules.61-coll/040-restore.exp,
  testsuite/modules.61-coll/999-cleanup.exp: testsuite: add tests for
  collection management  Introduce modules.61-coll testsuite to guaranty that
  savelist, save and restore commands behave appropriately.  Add
  testoutfile_cmd procedure to 00-init/006-procs to get the ability to check
  module command output and specified file content. This new procedure enables
  to check content of collection generated by a 'save' command.

2016-07-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modulefiles/info/shellsexp,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/040-load.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/089-info-type.exp,
  testsuite/modules.50-cmds/195-load-recurs.exp,
  testsuite/modules.50-cmds/197-load-lots.exp,
  testsuite/modules.50-cmds/250-x-resource.exp,
  testsuite/modules.91-sort/040-load.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp: testsuite: add tests for fish
  shell

  * init/fish.in, modulecmd.tcl: Support for fish shell

2016-07-28  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.10-use/040-load.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.91-sort/040-load.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp: testsuite: add tests for
  tcl/python/lisp where perl is tested

2016-07-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * notdone/modules.50-cmds/086-info-shells.exp,
  notdone/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modulefiles/info/shellsexp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  .../modules.50-cmds/121-prereq-module.exp: testsuite: adapt
  50-cmds/info-shells and 50-cmds/121-prereq tests

  * testsuite/modulefiles/info/type, testsuite/modulefiles/load/.version,
  testsuite/modulefiles/load/00, testsuite/modulefiles/load/10,
  testsuite/modulefiles/load/11, testsuite/modulefiles/load/12,
  testsuite/modulefiles/load/13, testsuite/modulefiles/load/14,
  testsuite/modulefiles/load/15, testsuite/modulefiles/load/16,
  testsuite/modulefiles/load/17, testsuite/modulefiles/load/18,
  testsuite/modulefiles/load/19, testsuite/modulefiles/load/20,
  testsuite/modulefiles/load/21, testsuite/modulefiles/load/22,
  testsuite/modulefiles/load/23, testsuite/modulefiles/load/24,
  testsuite/modulefiles/load/25, testsuite/modulefiles/load/26,
  testsuite/modulefiles/load/27, testsuite/modulefiles/load/28,
  testsuite/modulefiles/load/29, testsuite/modulefiles/load/30,
  testsuite/modulefiles/load/all, testsuite/modulefiles/recurs/modA,
  testsuite/modulefiles/recurs/modB, testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.50-cmds/089-info-type.exp,
  testsuite/modules.50-cmds/195-load-recurs.exp,
  testsuite/modules.50-cmds/197-load-lots.exp: testsuite: import tests
  recently added to C-version

  * modulecmd.tcl: Add short option -d for --delim on append-path/remove-path

2016-07-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/home/.Xresources, testsuite/modulefiles/x-resource/1,
  testsuite/modules.50-cmds/250-x-resource.exp: testsuite: add tests and
  relative configs for x-resource  Add 250-x-resource tests in 50-cmds serie
  to check x-resource commands in modulefile are correctly interpreted at load
  and unload times for the various shells.  A x-resource/1 modulefile and a
  .Xresources config files are added to test various setting conditions
  (single resource string, complex string content, resource file to load).

  * modulecmd.tcl: Implement unload of x-resources and fix load  Implement
  unload action of x-resources defined for all shells. Unload of x-resources
  is done by clearing string resource values with "xrdb -merge" since there is
  no xrdb command that can clear one property (xrdb -remove clears
  everything). For resources loaded from file, file content is parsed with
  "xrdb -load" and each property it defines is also cleared.  This commit also
  corrects the way x-resource value is parsed. Sometimes x-resource value may
  be provided within resource name as the "x-resource {Ileaf.popup.saveUnder:
  True}" example provided in manpage. So if no value is provided, resource
  name is looked at to check if a value is provided within string (space or
  colon are looked at).  Load of x-resources is also fixed by this commit for
  sh, csh and tcl to handle resource name and value containing wildcard
  characters and fixed for sh and csh to output well-behaving code to execute
  ("echo | xrdb -merge" instead of "xrdb -merge <<EOF")

2016-07-22  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/python.in, modulecmd.tcl: Fix Python autoinit, error and x-resource
  rendering  Python code used to define the module command (autoinit action)
  was broken (syntax errors) and not Python3-compatible. Error rendering is
  also fixed here for Python3 compliance. Code used to process x-resource is
  adapted to comply with Python recommendation [1] (subprocess.Popen should be
  used instead of os.popen).  Python init script is also modified by this
  commit to use same code as the one generated by autoinit action with call to
  subprocess.Popen rather than os.popen.  [1]
  https://docs.python.org/2/library/os.html#os.popen

2016-07-18  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Replace reverseList proc by lreverse build-in proc
  lreverse build-in procedure has been introduced in Tcl8.5 and provides best
  performances. For compatibility with Tcl8.4 and earlier, a lreverse
  procedure is provided here (set if not defined). See [1] for an overview of
  lreverse implementations and performances.  [1] http://wiki.tcl.tk/17188

  * modulecmd.tcl: Fix dollar sign usage on XRDBPIPE variable

  * .gitignore: Ignore runtest result files in git repository

2016-07-17  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Use 'eq'/'ne' in place of '=='/'!=' to compare strings
  '==' and '!=' operators are meant for numerical comparison so it is more
  correct and faster to use 'eq' or 'ne' operators when comparing strings.
  This was found using the 'ttclcheck' utility [1] over the modulecmd.tcl
  complete code.  [1] http://www.xdobry.de/ttclcheck

2016-07-15  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Remove code regarding undefined g_aliasHash array  Some
  code where present in module-alias proc regarding a g_aliasHash global
  array. But this array variable is not defined nor used anywhere else in
  script.

  * modulecmd.tcl: Remove unused spaceEscaped proc

2016-07-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Introduce reportDebug proc  Add a reportDebug procedure to
  simplify and harmonize debug report management. With this new procedure, the
  way to test if debug is enabled or not is found only in one place (and
  g_debug variable does not have to be known in every procedures).

  * testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.95-version/040-xgetenv.exp: testsuite: comment
  cmds/140-system and version/040-xgetenv  Skip both cmds/140-system and
  version/040-xgetenv tests since pure-Tcl version of module does not behave
  like C version for "system" procedure and "live" resolution of variables set
  within paths.

2016-07-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Add hints for vim to correctly set tabs when developping

  * Makefile, testsuite/config/unix.exp: testsuite: fix MODULECMD
  initialization  Update way MODULECMD is defined to let a chance for
  modulecmd.tcl to be found before looking at PATH for modulecmd binary. This
  way on systems where modulecmd is installed in default paths, tests can
  still be run on modulecmd.tcl.  Remove MODULECMD env variable setup in
  Makefile for "make test" since environment variables are not looked at to
  initialize MODULECMD tcl variable when tests are configured.

2016-01-30  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl, testsuite/modulefiles/verssort/1,
  testsuite/modulefiles/verssort/1.10, testsuite/modulefiles/verssort/1.2.1,
  testsuite/modulefiles/verssort/1.2.4,
  testsuite/modulefiles/verssort/1.8-2015-12-01,
  testsuite/modulefiles/verssort/1.8-2016-02-01,
  testsuite/modules.91-sort/010-init_ts.exp,
  testsuite/modules.91-sort/020-avail.exp,
  testsuite/modules.91-sort/030-whatis.exp,
  testsuite/modules.91-sort/040-load.exp,
  testsuite/modules.91-sort/999-cleanup.exp: Always dictionary-sort list of
  modules or collections  Dictionary sort of Tcl enables to determine that a
  version 1.10 is greater that a version 1.8, for instance. This useful kind
  of sort was in use in modules-tcl previously but not for every sort. For
  instance load command was correctly able to find the greatest version of a
  module whereas avail and whatis commands did not sort existing versions
  accordingly.  This patch applies the dictionary sort everywhere to ensure
  the exact same sort is applied everywhere. Dictionary sort appears to be the
  most appropriate kind of sort to work with software versions. So the
  sort_order argument of listModules procedure is removed to always get the
  same sort applied. Also a stringDictionaryCompare procedure is added in
  order to compare two strings with dictionary-sort (useful to know what
  string is greater than the other).  In addition, modules.91-sort testsuite
  is introduced to guaranty that avail, whatis and load commands behave
  appropriately regarding sort.

2016-02-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.50-cmds/040-append.exp: testsuite: fixing init/030-shells
  and cmds/040-append  * Adapt error message when MODULEPATH is empty (message
  differ on this module implementation) on 00-init/030-shells testsuite *
  Adapt 50-cmds/040-append testsuite since adding a bare colon to a path does
  not produce a path change on this module implementation

2015-04-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash_completion: Fixing bash completion to be posix compliant  Bash
  Process Substitution is not known by posix sh so _module_not_yet_loaded
  function has been adapted to behave correctly when bash is launched in
  --posix mode.

2016-03-25  Kent Mein <mein@cs.umn.edu>

  * init/python.in: Make things work with python3.

2016-02-05  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl: Remove unneeded code that was causing an issue.  Thanks to
  Andy Barber for pointing this out.

2014-12-24  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl: Small tweak for OSX.  Uname is in a different location.

  * Makefile, doc/html/module.html, doc/html/modulefile.html,
  doc/man/man1/module.1, doc/man/man4/modulefile.4, doc/source/module.pl,
  doc/source/modulefile.pl: More doc work.

2014-11-12  Kent Mein <mein@cs.umn.edu>

  * doc/html/module.html, doc/html/modulefile.html, doc/man/man1/module.1,
  doc/man/man4/modulefile.4, doc/source/module.pl, doc/source/modulefile.pl:
  Fix some warnings in the documentation from podchecker.

2014-07-16  Kent Mein <mein@cs.umn.edu>

  * doc/html/module.html, doc/man/man1/module.1, doc/source/module.pl: Some
  work on documentation.

  * init/sh.in: Fix the check for interactive vs non interactive mode for some
  shells.

2014-06-05  Kent Mein <mein@cs.umn.edu>

  * doc/LICENSE.LGPL, doc/readme.txt: I talked to R.K. Owen and he cleared up
  why we had the LGPL there.  It turns out specific files in the C version of
  modules are under the LGPL, since those files are not in the tcl only
  version of modules I'm removing the LGPL just to clean things up.  Kent

2014-06-03  Kent Mein <mein@cs.umn.edu>

  * Makefile, doc/html/module.html, doc/html/modulefile.html,
  doc/man/man1/module.1, doc/man/man4/modulefile.4, doc/readme.txt,
  doc/source/module.pl, doc/source/modulefile.pl, man/man1/module.1,
  man/man4/modulefile.4: Create source docs for man pages.  This is still a
  work in progress, but I've converted the current man pages over to pod (perl
  documentation format) The idea being that it's easier to edit and can be
  converted to various formats.  The manpages are very out of date, but this
  at least will encourage me to keep them upto date and make it much easier to
  work with.

2014-05-21  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl: Rename some vars used for a named pipe  This affects both
  tcl and perl, and picks a more standard name between the two.

  * testsuite/modules.00-init/090-switches.exp: Update the test for the --help
  option since things have changed.

2014-05-20  Kent Mein <mein@cs.umn.edu>

  * init/.gitignore, init/Makefile, init/tcl.in, modulecmd.tcl: Patch from
  Yao-Ting Chiu  This adds the tcl shell as an option.

2014-05-01  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Clarify prereq error message when multiple modules are
  specified

2014-04-25  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Managing settings to save as a stack with push/pop
  procedures  Manage settings to save as a stack to have a separate set of
  settings for each module loaded or unloaded in order to be able to restore
  the correct set in case of failure.

2014-04-24  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fixing restoreSettings to clear current arrays  Clear
  current arrays before restoring saved values to remove potential new
  variables set before the issue occurs which lead to restoreSettings
  procedure call.

2014-03-14  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Improving save/restore command when saving module default
  version  Save the modulename minus the module version if loaded version to
  save is module default version.

2014-03-13  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Fixing saveSettings to clear pre-existing saved arrays
  Clear pre-existing saved arrays in saveSettings to guaranty that multiple
  load/unload sequence will restore correct settings when a failure occurs.

2014-03-11  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: Improving restore command behavior  Move from a
  Purge+Unuse+Source approach to a smoother way with Unload+Unuse+Use+Load of
  just the modules and modulepaths needed to migrate from currently loaded
  environment to collection with preservation of the load order.

  * modulecmd.tcl: Reorganizing help page with groups of command and short
  descriptions

2014-03-07  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl: Updating the version # wasn't done in the last commit.

2014-02-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * init/bash_completion, init/tcsh_completion, modulecmd.tcl: Introduction of
  save/restore/savelist commands for collection management  Add module
  collection management to enable dump and reload of multiple module
  environment states.

2014-02-14  Kent Mein <mein@cs.umn.edu>

  * contrib/pre-commit, modulecmd.tcl: Added a hook script to automatically
  bump the version #  Of modules to the next commit # so that next time we
  commit changes it will be updated.  This is a little bit tricky because of
  the way pre-commit's work.  (It's making the change for the next commit not
  the current one).

2014-02-12  Kent Mein <mein@cs.umn.edu>

  * contrib/modulefiles/HOME, contrib/modulefiles/dot,
  contrib/modulefiles/module-info, contrib/modulefiles/null,
  init/modulerc.examp: Added in a couple of the default modules I removed
  before.  Also modified the comments in the example modulerc file a little.

  * doc/install.txt, doc/installwin.txt, init/Makefile, init/modulerc.examp,
  modulefiles/.gitignore, modulefiles/HOME, modulefiles/dot,
  modulefiles/module-cvs, modulefiles/module-info, modulefiles/modules,
  modulefiles/notavail, modulefiles/null, modulefiles/use.own,
  modulefiles/version: Change make so it does not create a default modulerc
  And update the documentation so things flow a little better.

2014-02-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: modify list command show_modtimes behavior to match
  behavior of avail command  same specific header and module reporting format.
  gives show_modtimes more priority over show_oneperline.

2014-01-23  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: fix help usage message to correctly align switches

2014-02-09  Xavier Delaruelle <xavier.delaruelle@cea.fr>

  * modulecmd.tcl: fix show_modtimes to correctly display day number

2014-01-16  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl: Small patch by Trey Greer  Fixes it so LOADEDMODULES env
  var is initalized correctly when it's set to "".

  * modulecmd.tcl: Fixed a typo.  I introduced a typo in the last commit this
  fixes it.

  * modulecmd.tcl: Fix up the formating a little.

  * init/bash_completion: Another patch from Xavier Delaruelle,  Tweak to the
  bash completion so it works around some extra spacing.

  * init/csh.in, init/tcsh.in, init/tcsh_completion: Another patch by Xavier
  Delaruelle,  This one reworks the patch from Joshua Randall to define tcsh
  completion for the c version so it works with this one.

  * init/bash_completion, modulecmd.tcl: More patches from Xavier Delaruelle,
  Added -D option (short form of --debug) Added -d or --default to only show
  default modules when doing module avail Added -L or --latest to only show
  latest version of modules when doing avail

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in: Patch from Xavier
  Delaruelle,  Now only redirect module from stderr to stdout in interactive
  mode to avoid breaking non interactive sessions (scp, sftp, etc).

  * init/bash_completion, modulecmd.tcl: 3 patches from Xavier Delaruelle  Add
  --long and --terse options to help. Fix ModulesDisplay so it works. Fix
  ModulesAlias function so it works as well.

2013-11-06  Kent Mein <mein@cs.umn.edu>

  * contrib/readme.txt, doc/{install => install.txt}, doc/installwin.txt,
  readme.txt: Updated the documentation a bit.

2013-11-04  Kent Mein <mein@cs.umn.edu>

  * init/bash.in, init/ksh.in, init/sh.in, init/zsh.in: Added redirect stderr
  to stdout for shells that support it.

  * init/tcsh.in: Fix a site specific bit that snuck in awhile back.  This
  shouldn't have been here, now it is fixed though.

  * init/bash.in: source the bash_completion script by default.  This is for
  the tcl native version of modules and it just starts using the
  bash_completion script that has been supplied so that it's actually used.

2013-10-19  Kent Mein <mein@cs.umn.edu>

  * doc/example.txt: Some small tweaks to example setup documentation.

2013-08-01  Kent Mein <mein@cs.umn.edu>

  * testsuite/modules.50-cmds/040-append.exp: Fix one of the tests.

  * modulecmd.tcl: Simplify the csh autoinit code.  If this is a problem we
  can add it back in but I'm guessing no one will even notice.

2013-06-06  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl: A few patches from Xavier Delaruel to adjust exit codes
  when an error appears.

2013-03-25  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl: Introduce MODULECONTACT var, Patch from Xavier Delaruelle
  So you can set the contact info with an environement variable instead of
  altering the modulecmd.tcl file directly.

2013-03-21  Kent Mein <mein@cs.umn.edu>

  * modulecmd.tcl: Clean up some dead code and a little reformating.

  * init/bash_completion: Patch by Xavier Delaruelle to add bash completion.
  You need to source the file in addition to the init/bash file to get it to
  work.

  * modulecmd.tcl: Fixing module help.  Thanks to Xavier Delaruelle for the
  fix.

2013-03-13  Kent Mein <mein@cs.umn.edu>

  * notdone/modules.20-locate/010-init_ts.exp,
  notdone/modules.20-locate/020-fqual.exp,
  notdone/modules.20-locate/030-defvers.exp,
  notdone/modules.20-locate/040-alias.exp,
  notdone/modules.20-locate/045-symvers.exp,
  notdone/modules.20-locate/046-getsym.exp,
  notdone/modules.20-locate/047-symerrs.exp,
  notdone/modules.20-locate/048-symexec.exp,
  notdone/modules.20-locate/050-locrc.exp,
  notdone/modules.20-locate/055-locrcerrs.exp,
  notdone/modules.20-locate/060-rc.exp,
  notdone/modules.20-locate/065-rcerrs.exp,
  notdone/modules.20-locate/070-homerc.exp,
  notdone/modules.20-locate/095-cleanup.exp,
  notdone/modules.50-cmds/017-use-undo.exp,
  notdone/modules.50-cmds/022-setenv-eschars.exp,
  notdone/modules.50-cmds/025-setenv-undo.exp,
  notdone/modules.50-cmds/035-unsetenv-undo.exp,
  notdone/modules.50-cmds/036-unsetenv-x.exp,
  notdone/modules.50-cmds/042-append-delim.exp,
  notdone/modules.50-cmds/045-append-undo.exp,
  notdone/modules.50-cmds/047-app-del-undo.exp,
  notdone/modules.50-cmds/050-prepend.exp,
  notdone/modules.50-cmds/052-prepend-delim.exp,
  notdone/modules.50-cmds/055-prepend-undo.exp,
  notdone/modules.50-cmds/057-pre-del-undo.exp,
  notdone/modules.50-cmds/060-remove.exp,
  notdone/modules.50-cmds/065-remove-undo.exp,
  notdone/modules.50-cmds/070-alias-proc.exp,
  notdone/modules.50-cmds/075-alias.exp,
  notdone/modules.50-cmds/076-alias-sub.exp,
  notdone/modules.50-cmds/077-alias-undo.exp,
  notdone/modules.50-cmds/078-refresh.exp,
  notdone/modules.50-cmds/080-info-name.exp,
  notdone/modules.50-cmds/081-info-user.exp,
  notdone/modules.50-cmds/082-info-user-exp.exp,
  notdone/modules.50-cmds/083-info-mode.exp,
  notdone/modules.50-cmds/084-info-mode-exp.exp,
  notdone/modules.50-cmds/085-info-flags.exp,
  notdone/modules.50-cmds/086-info-shells.exp,
  notdone/modules.50-cmds/087-info-shells-exp.exp,
  notdone/modules.50-cmds/088-info-isloaded.exp,
  notdone/modules.50-cmds/090-uname-proc.exp,
  notdone/modules.50-cmds/095-uname.exp,
  notdone/modules.50-cmds/099-uname-cleanup.exp,
  notdone/modules.50-cmds/100-loglevel.exp,
  notdone/modules.50-cmds/101-badfac.exp,
  notdone/modules.50-cmds/110-verbose.exp,
  notdone/modules.50-cmds/115-verbose-msg.exp,
  notdone/modules.50-cmds/120-prereq-full.exp,
  notdone/modules.50-cmds/121-prereq-module.exp,
  notdone/modules.50-cmds/130-conflict-full.exp,
  notdone/modules.50-cmds/131-conflict-module.exp,
  notdone/modules.50-cmds/140-system.exp,
  notdone/modules.50-cmds/150-module.exp,
  notdone/modules.50-cmds/170-swap.exp, notdone/modules.50-cmds/175-swap2.exp,
  notdone/modules.50-cmds/190-load.exp, notdone/modules.50-cmds/200-break.exp,
  notdone/modules.50-cmds/210-exit.exp,
  notdone/modules.50-cmds/220-continue.exp,
  notdone/modules.50-cmds/230-loop.exp, notdone/modules.50-cmds/240-chdir.exp:
  Added a bunch of test cases that are not put in yet that probably should be.

  * contrib/scripts/createmodule.sh: Add a contributed script to help creating
  inital modules.

2013-03-04  Kent Mein <mein@cs.umn.edu>

  * init/.gitignore: Add modulerc to .gitignore.

  * init/modulerc: Remove the modulerc file because it's built by make and its
  location dependant.

  * doc/example.txt: More work on the example document.

  * modulecmd.tcl: Added module-info type   so it returns "Tcl"

  * modulecmd.tcl: Fix a small problem pointed out by Sergiy Khan  Bug #49 in
  the tracker.

  * doc/example.txt, readme.txt: Small tweaks to the readme and added the
  example document.

  * contrib/modulefiles/compilers/.version,
  contrib/modulefiles/compilers/compilers, contrib/modulefiles/dot,
  contrib/modulefiles/gnu, contrib/modulefiles/java/.version,
  contrib/modulefiles/java/6/.version, contrib/modulefiles/java/6/35,
  contrib/modulefiles/java/6/38, contrib/modulefiles/java/7/.version,
  contrib/modulefiles/java/7/07, contrib/modulefiles/java/7/11,
  contrib/modulefiles/local, contrib/modulefiles/math/mathematica/.version,
  contrib/modulefiles/math/mathematica/7.0.1,
  contrib/modulefiles/math/mathematica/8.0.1, contrib/modulefiles/null,
  contrib/modulefiles/openwin, contrib/modulefiles/perl/.version,
  contrib/modulefiles/perl/5.14.1, contrib/modulefiles/perl/5.8.7,
  contrib/modulefiles/scheme/.version,
  contrib/modulefiles/scheme/drscheme/.version,
  contrib/modulefiles/scheme/drscheme/410,
  contrib/modulefiles/scheme/drscheme/425, contrib/modulefiles/scheme/mit,
  contrib/modulefiles/scheme/racket/.version,
  contrib/modulefiles/scheme/racket/5.0.2,
  contrib/modulefiles/scheme/racket/5.1.1,
  contrib/modulefiles/soft/gcc/.version, contrib/modulefiles/soft/gcc/4.5.2,
  contrib/modulefiles/soft/gcc/4.7.2, contrib/modulefiles/system,
  contrib/modulefiles/user, contrib/scripts/resetenv,
  contrib/scripts/resetgnome, contrib/template/.aliases,
  contrib/template/.bash_profile, contrib/template/.bashrc,
  contrib/template/.cshrc, contrib/template/.fvwm2rc,
  contrib/template/.gconf/apps/%gconf.xml,
  contrib/template/.gconf/apps/evolution/%gconf.xml,
  .../.gconf/apps/evolution/calendar/%gconf.xml,
  .../apps/evolution/calendar/notify/%gconf.xml,
  .../template/.gconf/apps/gconf-editor/%gconf.xml,
  contrib/template/.gconf/apps/gedit-2/%gconf.xml,
  .../.gconf/apps/gedit-2/plugins/%gconf.xml,
  .../apps/gedit-2/plugins/filebrowser/%gconf.xml,
  .../gedit-2/plugins/filebrowser/on_load/%gconf.xml,
  .../.gconf/apps/gedit-2/preferences/%gconf.xml,
  .../.gconf/apps/gedit-2/preferences/ui/%gconf.xml,
  .../gedit-2/preferences/ui/statusbar/%gconf.xml,
  .../.gconf/apps/gnome-power-manager/%gconf.xml,
  .../apps/gnome-power-manager/buttons/%gconf.xml,
  .../.gconf/apps/gnome-screensaver/%gconf.xml,
  .../template/.gconf/apps/gnome-settings/%gconf.xml,
  .../apps/gnome-settings/gnome-panel/%gconf.xml,
  .../template/.gconf/apps/gnome-terminal/%gconf.xml,
  .../.gconf/apps/gnome-terminal/profiles/%gconf.xml,
  .../gnome-terminal/profiles/Default/%gconf.xml,
  .../.gconf/apps/nautilus-open-terminal/%gconf.xml,
  contrib/template/.gconf/apps/panel/%gconf.xml,
  .../template/.gconf/apps/panel/applets/%gconf.xml,
  .../apps/panel/applets/clock_screen0/%gconf.xml,
  .../panel/applets/clock_screen0/prefs/%gconf.xml,
  .../applets/indicator_applet_screen0/%gconf.xml,
  .../apps/panel/applets/mixer_screen0/%gconf.xml,
  .../applets/notification_area_screen0/%gconf.xml,
  .../applets/show_desktop_button_screen0/%gconf.xml,
  .../panel/applets/trashapplet_screen0/%gconf.xml,
  .../panel/applets/window_list_screen0/%gconf.xml,
  .../applets/window_list_screen0/prefs/%gconf.xml,
  .../applets/workspace_switcher_screen0/%gconf.xml,
  .../workspace_switcher_screen0/prefs/%gconf.xml,
  .../template/.gconf/apps/panel/general/%gconf.xml,
  .../template/.gconf/apps/panel/objects/%gconf.xml,
  .../objects/browser_launcher_screen0/%gconf.xml,
  .../objects/clock_separator_screen0/%gconf.xml,
  .../apps/panel/objects/menu_bar_screen0/%gconf.xml,
  .../.gconf/apps/panel/objects/object_0/%gconf.xml,
  .../.gconf/apps/panel/objects/object_1/%gconf.xml,
  .../.gconf/apps/panel/objects/object_2/%gconf.xml,
  .../panel/objects/yelp_launcher_screen0/%gconf.xml,
  .../.gconf/apps/panel/toplevels/%gconf.xml,
  .../toplevels/bottom_panel_screen0/%gconf.xml,
  .../bottom_panel_screen0/background/%gconf.xml,
  .../panel/toplevels/top_panel_screen0/%gconf.xml,
  .../top_panel_screen0/background/%gconf.xml,
  contrib/template/.gconf/desktop/%gconf.xml,
  contrib/template/.gconf/desktop/gnome/%gconf.xml,
  .../.gconf/desktop/gnome/accessibility/%gconf.xml,
  .../gnome/accessibility/keyboard/%gconf.xml,
  .../.gconf/desktop/gnome/applications/%gconf.xml,
  .../gnome/applications/window_manager/%gconf.xml,
  .../.gconf/desktop/gnome/lockdown/%gconf.xml, contrib/template/.login,
  contrib/template/.logout, contrib/template/.mailcap,
  contrib/template/.mime.types, contrib/template/.vim/colors/herald.vim,
  contrib/template/.vim/colors/moria.vim,
  contrib/template/.vim/colors/xoria256.vim,
  contrib/template/.vim/perl-support.zip,
  .../template/.vim/perlsupport/README.perlsupport,
  .../.vim/perlsupport/autoload/perlsupportgui.vim,
  .../perlsupport/autoload/perlsupportprofiling.vim,
  .../.vim/perlsupport/autoload/perlsupportregex.vim,
  .../template/.vim/perlsupport/doc/perlsupport.txt,
  .../template/.vim/perlsupport/ftplugin/perl.vim,
  .../codesnippets/SmallProf-variables.pl,
  .../perl-support/codesnippets/dot.SmallProf,
  .../codesnippets/free-software-comment,
  .../perl-support/codesnippets/module-interface.pl,
  .../perlsupport/perl-support/codesnippets/new.pl,
  .../codesnippets/pod-template-application.pl,
  .../codesnippets/pod-template-module.pl,
  .../print-data-structure-with-Dumper.pl,
  .../perl-support/codesnippets/print-hash-sorted.pl,
  .../perl-support/codesnippets/print-hash.pl,
  ...process-all-files-in-a-directory-recursively.pl,
  .../perl-support/codesnippets/slurp-file.pl,
  .../.vim/perlsupport/perl-support/doc/ChangeLog,
  .../perlsupport/perl-support/doc/perl-hot-keys.pdf,
  .../perlsupport/perl-support/doc/perl-hot-keys.tex,
  .../.vim/perlsupport/perl-support/doc/pmdesc3.text,
  .../perl-support/modules/perl-modules.list,
  .../perl-support/rc/customization.ctags,
  .../perl-support/rc/customization.gvimrc,
  .../perl-support/rc/customization.perltidyrc,
  .../perl-support/rc/customization.smallprof,
  .../perl-support/rc/customization.vimrc,
  .../perlsupport/perl-support/scripts/csv2err.pl,
  .../perlsupport/perl-support/scripts/efm_perl.pl,
  .../perlsupport/perl-support/scripts/pmdesc3.pl,
  .../perlsupport/perl-support/scripts/wrapper.sh,
  .../perlsupport/perl-support/templates/Templates,
  .../perl-support/templates/comments.template,
  .../perl-support/templates/idioms.template,
  .../perl-support/templates/pod.template,
  .../perl-support/templates/statements.template,
  .../perlsupport/perl-support/wordlists/perl.list,
  .../.vim/perlsupport/plugin/perl-support.vim,
  contrib/template/.vim/plugin/matrix.vim,
  contrib/template/.vim/syntax/fluxkeys.vim,
  contrib/template/.vim/syntax/perl.vim, contrib/template/README.dotfiles,
  contrib/template/resetenv.conf, man/man1/module.1, man/man4/modulefile.4:
  Added really old man pages, and a bunch of example things. Still need to
  write some documentation for the contrib stuff and update the man pages.

  * LICENSE.GPL => doc/LICENSE.GPL, LICENSE.LGPL => doc/LICENSE.LGPL,
  README-EMACS.txt => doc/emacs.txt, README.txt => doc/install,
  doc/installwin.txt, readme.txt: Setup some more complicated documentation
  and move existing docs to new dir.

2013-01-22  Kent Mein <mein@cs.umn.edu>

  * modulefiles/{HOME.in => HOME}, modulefiles/Makefile.am,
  modulefiles/{dot.in => dot}, modulefiles/lang/.gitignore,
  modulefiles/lang/.mklang, modulefiles/{module-cvs.in => module-cvs},
  modulefiles/{module-info.in => module-info}, modulefiles/{modules.in =>
  modules}, modulefiles/{notavail.in => notavail}, modulefiles/{null.in =>
  null}, modulefiles/{use.own.in => use.own}, modulefiles/{version.in =>
  version}: Clean up the default modulefiles a bit.  Kent

  * .gitattributes, doc/.gitignore, doc/Makefile.am, doc/Modules-Paper.doc,
  doc/Modules-Paper.pdf, doc/module.1.in, doc/modulefile.4.in: Removed the
  documentation, no need to have it twice. Maybe will work on a way to add it
  back in later...  Kent

  * xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Avail.c.src.html,
  xref/ModuleCmd_Clear.c.html, xref/ModuleCmd_Clear.c.src.html,
  xref/ModuleCmd_Display.c.html, xref/ModuleCmd_Display.c.src.html,
  xref/ModuleCmd_Help.c.html, xref/ModuleCmd_Help.c.src.html,
  xref/ModuleCmd_Init.c.html, xref/ModuleCmd_Init.c.src.html,
  xref/ModuleCmd_List.c.html, xref/ModuleCmd_List.c.src.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Load.c.src.html,
  xref/ModuleCmd_Purge.c.html, xref/ModuleCmd_Purge.c.src.html,
  xref/ModuleCmd_Refresh.c.html, xref/ModuleCmd_Refresh.c.src.html,
  xref/ModuleCmd_Switch.c.html, xref/ModuleCmd_Switch.c.src.html,
  xref/ModuleCmd_Update.c.html, xref/ModuleCmd_Update.c.src.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Use.c.src.html,
  xref/ModuleCmd_Whatis.c.html, xref/ModuleCmd_Whatis.c.src.html,
  xref/cmdAlias.c.html, xref/cmdAlias.c.src.html, xref/cmdChdir.c.html,
  xref/cmdChdir.c.src.html, xref/cmdConflict.c.html,
  xref/cmdConflict.c.src.html, xref/cmdInfo.c.html, xref/cmdInfo.c.src.html,
  xref/cmdIsLoaded.c.html, xref/cmdIsLoaded.c.src.html, xref/cmdLog.c.html,
  xref/cmdLog.c.src.html, xref/cmdMisc.c.html, xref/cmdMisc.c.src.html,
  xref/cmdModule.c.html, xref/cmdModule.c.src.html, xref/cmdPath.c.html,
  xref/cmdPath.c.src.html, xref/cmdSetenv.c.html, xref/cmdSetenv.c.src.html,
  xref/cmdUlvl.c.html, xref/cmdUlvl.c.src.html, xref/cmdUname.c.html,
  xref/cmdUname.c.src.html, xref/cmdVerbose.c.html,
  xref/cmdVerbose.c.src.html, xref/cmdVersion.c.html,
  xref/cmdVersion.c.src.html, xref/cmdWhatis.c.html,
  xref/cmdWhatis.c.src.html, xref/cmdXResource.c.html,
  xref/cmdXResource.c.src.html, xref/config.h.html, xref/config.h.src.html,
  xref/cxref.apdx.html, xref/cxref.css, xref/cxref.function, xref/cxref.html,
  xref/cxref.include, xref/cxref.typedef, xref/cxref.variable,
  xref/error.c.html, xref/error.c.src.html, xref/getopt.c.html,
  xref/getopt.c.src.html, xref/getopt.h.html, xref/getopt.h.src.html,
  xref/index.html, xref/init.c.html, xref/init.c.src.html,
  xref/locate_module.c.html, xref/locate_module.c.src.html, xref/main.c.html,
  xref/main.c.src.html, xref/modules_def.h.html, xref/modules_def.h.src.html,
  xref/utility.c.html, xref/utility.c.src.html, xref/utilmem.c.html,
  xref/utilmem.c.src.html, xref/utilobj.c.html, xref/utilobj.c.src.html,
  xref/uvec.c.html, xref/uvec.c.src.html, xref/version.c.html,
  xref/version.c.src.html: Removing more stuff that was c version specific.
  Kent

2013-01-10  Kent Mein <mein@cs.umn.edu>

  * tcl/Makefile => Makefile, tcl/README-EMACS.txt => README-EMACS.txt,
  tcl/README.txt => README.txt, {tcl/init => init}/.gitignore, {tcl/init =>
  init}/Makefile, {tcl/init => init}/README.txt, {tcl/init => init}/bash.in,
  {tcl/init => init}/csh.in, {tcl/init => init}/ksh.in, {tcl/init =>
  init}/lisp.in, {tcl/init => init}/modulerc, {tcl/init => init}/perl.in,
  {tcl/init => init}/python.in, {tcl/init => init}/sh.in, {tcl/init =>
  init}/tcsh.in, {tcl/init => init}/zsh.debug, {tcl/init => init}/zsh.in,
  tcl/modulecmd.tcl => modulecmd.tcl, {tcl/testsuite =>
  testsuite}/config/unix.exp, {tcl/testsuite => testsuite}/etc/bad,
  {tcl/testsuite => testsuite}/etc/empty, {tcl/testsuite =>
  testsuite}/etc/modulerc, {tcl/testsuite => testsuite}/home/.modulerc,
  {tcl/testsuite => testsuite}/home/.modules, {tcl/testsuite =>
  testsuite}/home/.modules.save, .../modulefiles.deep/modulerc/.modulerc,
  .../modulefiles.deep/modulerc/dir1/.modulerc,
  .../modulefiles.deep/modulerc/dir1/1.0,
  .../modulefiles.deep/modulerc/dir1/2.0,
  .../modulefiles.deep/modulerc/dir2/.modulerc,
  .../modulefiles.deep/modulerc/dir2/1.0/.modulerc,
  .../modulefiles.deep/modulerc/dir2/1.0/rc1,
  .../modulefiles.deep/modulerc/dir2/1.0/rc2,
  .../modulefiles.deep/modulerc/dir2/2.0,
  .../modulefiles.deep/modulerc/dir2/3.0, .../testsuite =>
  testsuite}/modulefiles.deep/plain/dir1/1.0, .../testsuite =>
  testsuite}/modulefiles.deep/plain/dir1/2.0, .../testsuite =>
  testsuite}/modulefiles.deep/plain/dir2/1.0, .../testsuite =>
  testsuite}/modulefiles.deep/plain/dir2/2.0,
  .../modulefiles.deep/version/.version,
  .../modulefiles.deep/version/dir1/.version,
  .../modulefiles.deep/version/dir1/1.0,
  .../modulefiles.deep/version/dir1/2.0,
  .../modulefiles.deep/version/dir2/.version,
  .../modulefiles.deep/version/dir2/1.0,
  .../modulefiles.deep/version/dir2/2.0/.version,
  .../modulefiles.deep/version/dir2/2.0/rc1,
  .../modulefiles.deep/version/dir2/2.0/rc2,
  .../modulefiles.deep/version/dir2/3.0, {tcl/testsuite =>
  testsuite}/modulefiles.other/1.1/version, {tcl/testsuite =>
  testsuite}/modulefiles.other/1.2/version, {tcl/testsuite =>
  testsuite}/modulefiles.other/1.3/version, {tcl/testsuite =>
  testsuite}/modulefiles.other/README, {tcl/testsuite =>
  testsuite}/modulefiles/README, {tcl/testsuite =>
  testsuite}/modulefiles/alias/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/alias/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/append/0.1, {tcl/testsuite =>
  testsuite}/modulefiles/append/0.2, {tcl/testsuite =>
  testsuite}/modulefiles/append/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/append/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/append/2.1, {tcl/testsuite =>
  testsuite}/modulefiles/append/2.2, {tcl/testsuite =>
  testsuite}/modulefiles/break/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/break/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/break/3.0, {tcl/testsuite =>
  testsuite}/modulefiles/break/4.0, {tcl/testsuite =>
  testsuite}/modulefiles/chdir/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/chdir/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/chdir/3.0, {tcl/testsuite =>
  testsuite}/modulefiles/chdir/4.0, {tcl/testsuite =>
  testsuite}/modulefiles/conflict/full, {tcl/testsuite =>
  testsuite}/modulefiles/conflict/module, {tcl/testsuite =>
  testsuite}/modulefiles/continue/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/continue/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/continue/3.0, {tcl/testsuite =>
  testsuite}/modulefiles/continue/4.0, {tcl/testsuite =>
  testsuite}/modulefiles/empty/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/eschars/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/exit/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/exit/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/exit/3.0, {tcl/testsuite =>
  testsuite}/modulefiles/help/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/info/isloaded, {tcl/testsuite =>
  testsuite}/modulefiles/info/mode1, {tcl/testsuite =>
  testsuite}/modulefiles/info/mode2, {tcl/testsuite =>
  testsuite}/modulefiles/info/mode3, {tcl/testsuite =>
  testsuite}/modulefiles/info/mode4, {tcl/testsuite =>
  testsuite}/modulefiles/info/mode5, {tcl/testsuite =>
  testsuite}/modulefiles/info/mode6, {tcl/testsuite =>
  testsuite}/modulefiles/info/name, {tcl/testsuite =>
  testsuite}/modulefiles/info/shells, {tcl/testsuite =>
  testsuite}/modulefiles/info/shellsexp, {tcl/testsuite =>
  testsuite}/modulefiles/info/user, {tcl/testsuite =>
  testsuite}/modulefiles/info/userexp, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv1/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv1/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv1/3.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv2/.version, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv2/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv2/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv3/.version, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv3/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv3/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv4/.version, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv4/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv4/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv6/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv6/2.0/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv7/.version, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv7/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv7/2.0/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv7/3.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv8/.version, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv8/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_dv8/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_fq/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_fq/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc1/.modulerc, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc1/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc1/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc2/.modulerc, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc2/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc2/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc3/.modulerc, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc3/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc3/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc3/3.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc4/.modulerc, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc4/.version, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc4/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc4/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc4/3.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc5/.modulerc, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc5/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_rc5/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/alias1, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/alias2, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/alias3, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/alias4, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/alias5, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/alias6, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/exec1, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/exec2, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/getvers1, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/getvers2, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/getvers3, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/getvers4, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/getvers5, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/getvers6, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/getvers7, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/getvers8, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/versinf1, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/versinf2, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/versinf3, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/versinf4, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/versinf5, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/versinf6, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/versinf7, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version1, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version10, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version11, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version12, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version13, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version14, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version2, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version3, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version4, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version5, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version6, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version7, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version8, {tcl/testsuite =>
  testsuite}/modulefiles/loc_sym/version9, {tcl/testsuite =>
  testsuite}/modulefiles/log/badfac, {tcl/testsuite =>
  testsuite}/modulefiles/log/err_both_1, {tcl/testsuite =>
  testsuite}/modulefiles/log/err_both_2, {tcl/testsuite =>
  testsuite}/modulefiles/log/err_file, {tcl/testsuite =>
  testsuite}/modulefiles/log/err_syslog, {tcl/testsuite =>
  testsuite}/modulefiles/module/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/prepend/0.1, {tcl/testsuite =>
  testsuite}/modulefiles/prepend/0.2, {tcl/testsuite =>
  testsuite}/modulefiles/prepend/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/prepend/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/prepend/2.1, {tcl/testsuite =>
  testsuite}/modulefiles/prepend/2.2, {tcl/testsuite =>
  testsuite}/modulefiles/prereq/full, {tcl/testsuite =>
  testsuite}/modulefiles/prereq/module, {tcl/testsuite =>
  testsuite}/modulefiles/remove/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/setenv/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/system/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/trace/all_off, {tcl/testsuite =>
  testsuite}/modulefiles/trace/all_on, {tcl/testsuite =>
  testsuite}/modulefiles/uname/domain, {tcl/testsuite =>
  testsuite}/modulefiles/uname/machine, {tcl/testsuite =>
  testsuite}/modulefiles/uname/nodename, {tcl/testsuite =>
  testsuite}/modulefiles/uname/release, {tcl/testsuite =>
  testsuite}/modulefiles/uname/sysname, {tcl/testsuite =>
  testsuite}/modulefiles/uname/version, {tcl/testsuite =>
  testsuite}/modulefiles/unsetenv/0.9, {tcl/testsuite =>
  testsuite}/modulefiles/unsetenv/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/use/.version, {tcl/testsuite =>
  testsuite}/modulefiles/use/1.0, {tcl/testsuite =>
  testsuite}/modulefiles/use/2.0, {tcl/testsuite =>
  testsuite}/modulefiles/use/2.1, {tcl/testsuite =>
  testsuite}/modulefiles/use/2.2, {tcl/testsuite =>
  testsuite}/modulefiles/user/adv, {tcl/testsuite =>
  testsuite}/modulefiles/user/advanced, {tcl/testsuite =>
  testsuite}/modulefiles/user/exp, {tcl/testsuite =>
  testsuite}/modulefiles/user/expert, {tcl/testsuite =>
  testsuite}/modulefiles/user/nov, {tcl/testsuite =>
  testsuite}/modulefiles/user/novice, {tcl/testsuite =>
  testsuite}/modulefiles/user/undef, {tcl/testsuite =>
  testsuite}/modulefiles/verbose/msg, {tcl/testsuite =>
  testsuite}/modulefiles/verbose/off, {tcl/testsuite =>
  testsuite}/modulefiles/verbose/on, {tcl/testsuite =>
  testsuite}/modulefiles/verbose/undef, {tcl/testsuite =>
  testsuite}/modulefiles/versions/1.1, {tcl/testsuite =>
  testsuite}/modulefiles/versions/1.2, {tcl/testsuite =>
  testsuite}/modulefiles/versions/1.3, {tcl/testsuite =>
  testsuite}/modulefiles/whatis/lines, {tcl/testsuite =>
  testsuite}/modulefiles/whatis/multiple, {tcl/testsuite =>
  testsuite}/modulefiles/whatis/none, {tcl/testsuite =>
  testsuite}/modulefiles/whatis/single, {tcl/testsuite =>
  testsuite}/modulefiles/whatis/string, .../testsuite =>
  testsuite}/modules.00-init/005-init_ts.exp, {tcl/testsuite =>
  testsuite}/modules.00-init/006-procs.exp, .../testsuite =>
  testsuite}/modules.00-init/010-environ.exp, .../testsuite =>
  testsuite}/modules.00-init/015-version.exp, {tcl/testsuite =>
  testsuite}/modules.00-init/030-shells.exp, .../testsuite =>
  testsuite}/modules.00-init/050-modpath.exp, {tcl/testsuite =>
  testsuite}/modules.00-init/080-begenv.exp,
  .../modules.00-init/090-switches.exp, {tcl/testsuite =>
  testsuite}/modules.10-use/010-init_ts.exp, {tcl/testsuite =>
  testsuite}/modules.10-use/030-use.exp, {tcl/testsuite =>
  testsuite}/modules.10-use/031-append.exp, {tcl/testsuite =>
  testsuite}/modules.10-use/040-load.exp, {tcl/testsuite =>
  testsuite}/modules.10-use/070-unuse.exp, .../testsuite =>
  testsuite}/modules.50-cmds/010-init_ts.exp, {tcl/testsuite =>
  testsuite}/modules.50-cmds/015-use.exp, {tcl/testsuite =>
  testsuite}/modules.50-cmds/020-setenv.exp,
  .../modules.50-cmds/030-unsetenv.exp, {tcl/testsuite =>
  testsuite}/modules.50-cmds/040-append.exp, {tcl/testsuite =>
  testsuite}/modules.50-cmds/140-system.exp, .../testsuite =>
  testsuite}/modules.50-cmds/999-cleanup.exp, .../testsuite =>
  testsuite}/modules.80-deep/010-init_ts.exp, {tcl/testsuite =>
  testsuite}/modules.80-deep/020-load.exp, .../testsuite =>
  testsuite}/modules.80-deep/030-display.exp, {tcl/testsuite =>
  testsuite}/modules.80-deep/040-list.exp, .../testsuite =>
  testsuite}/modules.80-deep/999-cleanup.exp,
  .../modules.90-avail/010-init_ts.exp, .../testsuite =>
  testsuite}/modules.90-avail/020-single.exp,
  .../modules.90-avail/030-multiple.exp, {tcl/testsuite =>
  testsuite}/modules.90-avail/040-wild.exp, {tcl/testsuite =>
  testsuite}/modules.90-avail/050-long.exp, {tcl/testsuite =>
  testsuite}/modules.90-avail/060-empty.exp,
  .../modules.95-version/010-init_ts.exp, .../testsuite =>
  testsuite}/modules.95-version/020-load.exp,
  .../modules.95-version/020-unload.exp, .../modules.95-version/022-load2.exp,
  .../modules.95-version/022-unload2.exp,
  .../modules.95-version/040-xgetenv.exp,
  .../modules.95-version/999-cleanup.exp, {tcl/testsuite =>
  testsuite}/not_installed, {tcl/testsuite => testsuite}/systest, {tcl/windows
  => windows}/module-tcl-win.chm, {tcl/windows => windows}/module.cmd,
  {tcl/windows => windows}/moduleinit.cmd: Moved things out of the tcl
  directory.  Kent

  * .cxref, .ftp, .gitignore, .indent.pro, .spec.in, ChangeLog, INSTALL,
  INSTALL.RH7x, MACHINES, Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c,
  ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c,
  ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c,
  ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c,
  NEWS, PROBLEMS, README, README.perl, TODO, acinclude.m4, cmdAlias.c,
  cmdChdir.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c,
  cmdModule.c, cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c,
  cmdVersion.c, cmdWhatis.c, cmdXResource.c, config/.gitignore,
  config/emtcl.m4, config/tcl.m4, configure.ac, contrib/modules.ebuild,
  cvs2cl.pl, error.c, etc/.gitignore, etc/Makefile.am, etc/README,
  etc/add.modules.in, etc/global/.gitignore, etc/global/bashrc.in,
  etc/global/csh.cshrc.in, etc/global/csh.login.in, etc/global/csh.modules.in,
  etc/global/profile.in, etc/global/profile.modules.in, etc/mkroot.in,
  etc/skel/.cshrc.in, etc/skel/.gitignore, etc/skel/.kshenv.in,
  etc/skel/.login.in, etc/skel/.profile.in, ext/.gitignore, ext/Makefile.am,
  ext/README, ext/add.ext.in, ext/common/.cshrc.in, ext/common/.gitignore,
  ext/common/.kshenv.in, ext/common/.login.in, ext/common/.profile.in,
  ext/mkroot.in, ext/skel/.cshrc.ext, ext/skel/.kshenv.ext,
  ext/skel/.login.ext, ext/skel/.modules, ext/skel/.profile.ext, getopt.c,
  getopt.h, init.c, init/.gitignore, init/.modulespath.in, init/Makefile.am,
  init/bash.in, init/bash_completion.in, init/cmake.in, init/csh.in,
  init/ksh.in, init/perl.pm.in, init/python.py.in, init/ruby.rb.in,
  init/sh.in, init/zsh.in, locate_module.c, main.c, modules.lsm.in,
  modules_def.h, ovec.c, ovec.h, po/.cvsignore, po/ChangeLog, po/LINGUAS,
  po/Makevars, po/POTFILES.in, testsuite/.gitignore,
  testsuite/config/unix.exp, testsuite/etc/.gitignore, testsuite/etc/bad,
  testsuite/etc/empty, testsuite/etc/modulerc, testsuite/home/.gitignore,
  testsuite/home/.modulerc, testsuite/home/.modules.save,
  testsuite/modulefiles.deep/modulerc/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir1/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir1/1.0,
  testsuite/modulefiles.deep/modulerc/dir1/2.0,
  testsuite/modulefiles.deep/modulerc/dir2/.modulerc,
  .../modulefiles.deep/modulerc/dir2/1.0/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir2/1.0/rc1,
  testsuite/modulefiles.deep/modulerc/dir2/1.0/rc2,
  testsuite/modulefiles.deep/modulerc/dir2/2.0,
  testsuite/modulefiles.deep/modulerc/dir2/3.0,
  testsuite/modulefiles.deep/plain/dir1/1.0,
  testsuite/modulefiles.deep/plain/dir1/2.0,
  testsuite/modulefiles.deep/plain/dir2/1.0,
  testsuite/modulefiles.deep/plain/dir2/2.0,
  testsuite/modulefiles.deep/version/.version,
  testsuite/modulefiles.deep/version/dir1/.version,
  testsuite/modulefiles.deep/version/dir1/1.0,
  testsuite/modulefiles.deep/version/dir1/2.0,
  testsuite/modulefiles.deep/version/dir2/.version,
  testsuite/modulefiles.deep/version/dir2/1.0,
  .../modulefiles.deep/version/dir2/2.0/.version,
  testsuite/modulefiles.deep/version/dir2/2.0/rc1,
  testsuite/modulefiles.deep/version/dir2/2.0/rc2,
  testsuite/modulefiles.deep/version/dir2/3.0,
  testsuite/modulefiles.other/1.1/version,
  testsuite/modulefiles.other/1.2/version,
  testsuite/modulefiles.other/1.3/version, testsuite/modulefiles.other/README,
  testsuite/modulefiles/README, testsuite/modulefiles/alias/1.0,
  testsuite/modulefiles/alias/2.0, testsuite/modulefiles/append/0.1,
  testsuite/modulefiles/append/0.2, testsuite/modulefiles/append/1.0,
  testsuite/modulefiles/append/1.1, testsuite/modulefiles/append/2.0,
  testsuite/modulefiles/append/2.1, testsuite/modulefiles/append/2.2,
  testsuite/modulefiles/break/1.0, testsuite/modulefiles/break/2.0,
  testsuite/modulefiles/break/3.0, testsuite/modulefiles/break/4.0,
  testsuite/modulefiles/chdir/1.0, testsuite/modulefiles/chdir/2.0,
  testsuite/modulefiles/chdir/3.0, testsuite/modulefiles/chdir/4.0,
  testsuite/modulefiles/conflict/full, testsuite/modulefiles/conflict/module,
  testsuite/modulefiles/continue/1.0, testsuite/modulefiles/continue/2.0,
  testsuite/modulefiles/continue/3.0, testsuite/modulefiles/continue/4.0,
  testsuite/modulefiles/empty/1.0, testsuite/modulefiles/eschars/1.0,
  testsuite/modulefiles/exit/1.0, testsuite/modulefiles/exit/2.0,
  testsuite/modulefiles/exit/3.0, testsuite/modulefiles/help/2.0,
  testsuite/modulefiles/info/isloaded, testsuite/modulefiles/info/mode1,
  testsuite/modulefiles/info/mode2, testsuite/modulefiles/info/mode3,
  testsuite/modulefiles/info/mode4, testsuite/modulefiles/info/mode5,
  testsuite/modulefiles/info/mode6, testsuite/modulefiles/info/name,
  testsuite/modulefiles/info/shells, testsuite/modulefiles/info/shellsexp,
  testsuite/modulefiles/info/user, testsuite/modulefiles/info/userexp,
  testsuite/modulefiles/loc_dv1/1.0, testsuite/modulefiles/loc_dv1/2.0,
  testsuite/modulefiles/loc_dv1/3.0, testsuite/modulefiles/loc_dv2/.version,
  testsuite/modulefiles/loc_dv2/1.0, testsuite/modulefiles/loc_dv2/2.0,
  testsuite/modulefiles/loc_dv3/.version, testsuite/modulefiles/loc_dv3/1.0,
  testsuite/modulefiles/loc_dv3/2.0, testsuite/modulefiles/loc_dv4/.version,
  testsuite/modulefiles/loc_dv4/1.0, testsuite/modulefiles/loc_dv4/2.0,
  testsuite/modulefiles/loc_dv6/1.0, testsuite/modulefiles/loc_dv6/2.0/1.0,
  testsuite/modulefiles/loc_dv7/.version, testsuite/modulefiles/loc_dv7/1.0,
  testsuite/modulefiles/loc_dv7/2.0/1.0, testsuite/modulefiles/loc_dv7/3.0,
  testsuite/modulefiles/loc_dv8/.version, testsuite/modulefiles/loc_dv8/1.0,
  testsuite/modulefiles/loc_dv8/2.0, testsuite/modulefiles/loc_fq/1.0,
  testsuite/modulefiles/loc_fq/2.0, testsuite/modulefiles/loc_rc1/.modulerc,
  testsuite/modulefiles/loc_rc1/1.0, testsuite/modulefiles/loc_rc1/2.0,
  testsuite/modulefiles/loc_rc2/.modulerc, testsuite/modulefiles/loc_rc2/1.0,
  testsuite/modulefiles/loc_rc2/2.0, testsuite/modulefiles/loc_rc3/.modulerc,
  testsuite/modulefiles/loc_rc3/1.0, testsuite/modulefiles/loc_rc3/2.0,
  testsuite/modulefiles/loc_rc3/3.0, testsuite/modulefiles/loc_rc4/.modulerc,
  testsuite/modulefiles/loc_rc4/.version, testsuite/modulefiles/loc_rc4/1.0,
  testsuite/modulefiles/loc_rc4/2.0, testsuite/modulefiles/loc_rc4/3.0,
  testsuite/modulefiles/loc_rc5/.modulerc, testsuite/modulefiles/loc_rc5/1.0,
  testsuite/modulefiles/loc_rc5/2.0, testsuite/modulefiles/loc_sym/1.0,
  testsuite/modulefiles/loc_sym/alias1, testsuite/modulefiles/loc_sym/alias2,
  testsuite/modulefiles/loc_sym/alias3, testsuite/modulefiles/loc_sym/alias4,
  testsuite/modulefiles/loc_sym/alias5, testsuite/modulefiles/loc_sym/alias6,
  testsuite/modulefiles/loc_sym/exec1, testsuite/modulefiles/loc_sym/exec2,
  testsuite/modulefiles/loc_sym/getvers1,
  testsuite/modulefiles/loc_sym/getvers2,
  testsuite/modulefiles/loc_sym/getvers3,
  testsuite/modulefiles/loc_sym/getvers4,
  testsuite/modulefiles/loc_sym/getvers5,
  testsuite/modulefiles/loc_sym/getvers6,
  testsuite/modulefiles/loc_sym/getvers7,
  testsuite/modulefiles/loc_sym/getvers8,
  testsuite/modulefiles/loc_sym/versinf1,
  testsuite/modulefiles/loc_sym/versinf2,
  testsuite/modulefiles/loc_sym/versinf3,
  testsuite/modulefiles/loc_sym/versinf4,
  testsuite/modulefiles/loc_sym/versinf5,
  testsuite/modulefiles/loc_sym/versinf6,
  testsuite/modulefiles/loc_sym/versinf7,
  testsuite/modulefiles/loc_sym/version1,
  testsuite/modulefiles/loc_sym/version10,
  testsuite/modulefiles/loc_sym/version11,
  testsuite/modulefiles/loc_sym/version12,
  testsuite/modulefiles/loc_sym/version13,
  testsuite/modulefiles/loc_sym/version14,
  testsuite/modulefiles/loc_sym/version2,
  testsuite/modulefiles/loc_sym/version3,
  testsuite/modulefiles/loc_sym/version4,
  testsuite/modulefiles/loc_sym/version5,
  testsuite/modulefiles/loc_sym/version6,
  testsuite/modulefiles/loc_sym/version7,
  testsuite/modulefiles/loc_sym/version8,
  testsuite/modulefiles/loc_sym/version9, testsuite/modulefiles/log/badfac,
  testsuite/modulefiles/log/err_both_1, testsuite/modulefiles/log/err_both_2,
  testsuite/modulefiles/log/err_file, testsuite/modulefiles/log/err_syslog,
  testsuite/modulefiles/module/2.0, testsuite/modulefiles/prepend/0.1,
  testsuite/modulefiles/prepend/0.2, testsuite/modulefiles/prepend/1.0,
  testsuite/modulefiles/prepend/1.1, testsuite/modulefiles/prepend/2.0,
  testsuite/modulefiles/prepend/2.1, testsuite/modulefiles/prepend/2.2,
  testsuite/modulefiles/prereq/full, testsuite/modulefiles/prereq/module,
  testsuite/modulefiles/recurs/modA, testsuite/modulefiles/recurs/modB,
  testsuite/modulefiles/remove/2.0, testsuite/modulefiles/setenv/1.0,
  testsuite/modulefiles/system/2.0, testsuite/modulefiles/trace/all_off,
  testsuite/modulefiles/trace/all_on, testsuite/modulefiles/uname/domain,
  testsuite/modulefiles/uname/machine, testsuite/modulefiles/uname/nodename,
  testsuite/modulefiles/uname/release, testsuite/modulefiles/uname/sysname,
  testsuite/modulefiles/uname/version, testsuite/modulefiles/unsetenv/0.9,
  testsuite/modulefiles/unsetenv/1.0, testsuite/modulefiles/use/.version,
  testsuite/modulefiles/use/1.0, testsuite/modulefiles/use/2.0,
  testsuite/modulefiles/use/2.1, testsuite/modulefiles/use/2.2,
  testsuite/modulefiles/user/adv, testsuite/modulefiles/user/advanced,
  testsuite/modulefiles/user/exp, testsuite/modulefiles/user/expert,
  testsuite/modulefiles/user/nov, testsuite/modulefiles/user/novice,
  testsuite/modulefiles/user/undef, testsuite/modulefiles/verbose/msg,
  testsuite/modulefiles/verbose/off, testsuite/modulefiles/verbose/on,
  testsuite/modulefiles/verbose/undef, testsuite/modulefiles/versions/1.1,
  testsuite/modulefiles/versions/1.2, testsuite/modulefiles/versions/1.3,
  testsuite/modulefiles/whatis/lines, testsuite/modulefiles/whatis/multiple,
  testsuite/modulefiles/whatis/none, testsuite/modulefiles/whatis/single,
  testsuite/modulefiles/whatis/string,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.00-init/015-version.exp,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/050-modpath.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.10-use/010-init_ts.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/040-load.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/010-init_ts.exp,
  testsuite/modules.20-locate/020-fqual.exp,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/055-locrcerrs.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/065-rcerrs.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.20-locate/095-cleanup.exp,
  testsuite/modules.30-userlvl/010-init_ts.exp,
  testsuite/modules.30-userlvl/030-novice.exp,
  testsuite/modules.30-userlvl/035-nov.exp,
  testsuite/modules.30-userlvl/040-advanced.exp,
  testsuite/modules.30-userlvl/045-adv.exp,
  testsuite/modules.30-userlvl/050-expert.exp,
  testsuite/modules.30-userlvl/055-exp.exp,
  testsuite/modules.30-userlvl/090-undef.exp,
  testsuite/modules.50-cmds/010-init_ts.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/070-alias-proc.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/078-refresh.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/081-info-user.exp,
  testsuite/modules.50-cmds/082-info-user-exp.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/090-uname-proc.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/099-uname-cleanup.exp,
  testsuite/modules.50-cmds/100-loglevel.exp,
  testsuite/modules.50-cmds/101-badfac.exp,
  testsuite/modules.50-cmds/110-verbose.exp,
  testsuite/modules.50-cmds/115-verbose-msg.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/172-swap-app-delim.exp,
  testsuite/modules.50-cmds/173-swap-app-delim.exp,
  testsuite/modules.50-cmds/175-swap2.exp,
  testsuite/modules.50-cmds/177-swap-prep-delim.exp,
  testsuite/modules.50-cmds/178-swap-prep-delim.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/195-load-recurs.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/240-chdir.exp,
  testsuite/modules.50-cmds/999-cleanup.exp,
  testsuite/modules.60-initx/005-init.exp,
  testsuite/modules.60-initx/010-list.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/030-switch.exp,
  testsuite/modules.60-initx/040-prepend.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp,
  testsuite/modules.60-initx/095-cleanup.exp,
  testsuite/modules.70-maint/010-init_ts.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/043-listno.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/048-listlongno.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/095-cleanup.exp,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/040-list.exp,
  testsuite/modules.80-deep/999-cleanup.exp,
  testsuite/modules.90-avail/010-init_ts.exp,
  testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/060-empty.exp,
  testsuite/modules.95-version/010-init_ts.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp,
  testsuite/modules.95-version/999-cleanup.exp, testsuite/not_installed,
  testsuite/systest, utility.c, utilmem.c, utilobj.c, uvec.c, uvec.h,
  version.c: Removed all of the non tcl version stuff.  Or most of it anyway.
  Kent

2012-11-30  Kent Mein <mein@cs.umn.edu>

  * tcl/init/Makefile: Remove some unneeded complication to the Makefile since
  were not using cvs anymore.  Kent

2012-11-19  R.K. Owen <rk@owen.sj.ca.us>

  * LICENSE.GPL, LICENSE.LGPL, NEWS: Rolled in the recent LICENSE.GPL address
  change, and the same to the the LICENSE.LGPL.

2012-11-12  R.K. Owen <rk@owen.sj.ca.us>

  * ModuleCmd_Init.c, NEWS, cmdXResource.c, utility.c: Rolled in the following
  patch * Fixed the segfault problem with Tcl_RegExpCompile() (Kenneth Hoste,
  Tyson Whitehead)

2012-11-08  R.K. Owen <rk@owen.sj.ca.us>

  * ModuleCmd_Avail.c, NEWS, configure.ac, doc/module.1.in,
  doc/modulefile.4.in: Rolled in the increased Update buffer and using the
  locale for Avail.

2012-11-05  R.K. Owen <rk@owen.sj.ca.us>

  * ModuleCmd_Update.c, NEWS: * Increased the "update" buffer (Leon Kos)
  rolled into main branch.

2012-11-01  R.K. Owen <rk@owen.sj.ca.us>

  * ovec.h, uvec.h: Remove the $Id$ lines from the header files.

  * .gitattributes, Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c,
  ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c,
  ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c,
  ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c,
  cmdAlias.c, cmdChdir.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c,
  cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c,
  cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, configure.ac,
  error.c, etc/Makefile.am, etc/add.modules.in, ext/Makefile.am,
  ext/add.ext.in, getopt.c, init.c, init/.modulespath.in, init/Makefile.am,
  locate_module.c, main.c, modulefiles/Makefile.am, ovec.c, utility.c,
  utilmem.c, utilobj.c, uvec.c: Changing to the git $Id$

2012-10-30  R.K. Owen <rk@owen.sj.ca.us>

  * .cvsignore => .gitignore, NEWS, TODO, cmdPath.c, config/{.cvsignore =>
  .gitignore}, doc/{.cvsignore => .gitignore}, etc/{.cvsignore => .gitignore},
  etc/global/{.cvsignore => .gitignore}, etc/skel/{.cvsignore => .gitignore},
  ext/{.cvsignore => .gitignore}, ext/common/{.cvsignore => .gitignore},
  init/{.cvsignore => .gitignore}, modulefiles/{.cvsignore => .gitignore},
  modulefiles/lang/{.cvsignore => .gitignore}, tcl/init/{.cvsignore =>
  .gitignore}, testsuite/{.cvsignore => .gitignore}, testsuite/etc/{.cvsignore
  => .gitignore}, testsuite/home/{.cvsignore => .gitignore},
  testsuite/modulefiles/append/1.1, testsuite/modulefiles/prepend/1.1,
  testsuite/modulefiles/recurs/modA, testsuite/modulefiles/recurs/modB,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/172-swap-app-delim.exp,
  testsuite/modules.50-cmds/173-swap-app-delim.exp,
  testsuite/modules.50-cmds/177-swap-prep-delim.exp,
  testsuite/modules.50-cmds/178-swap-prep-delim.exp,
  testsuite/modules.50-cmds/195-load-recurs.exp: Rolled in the fix by Tyson
  Whitehead for the "module swap" with the --delim option

2012-10-29  R.K. Owen <rk@owen.sj.ca.us>

  * testsuite/modules.50-cmds/172-seap-app-delim.exp: Bad file name.

  * .gitignore, NEWS, cmdPath.c, testsuite/modulefiles/append/1.1,
  testsuite/modulefiles/prepend/1.1,
  testsuite/modules.50-cmds/172-seap-app-delim.exp,
  testsuite/modules.50-cmds/172-swap-app-delim.exp,
  testsuite/modules.50-cmds/173-swap-app-delim.exp,
  testsuite/modules.50-cmds/177-swap-prep-delim.exp,
  testsuite/modules.50-cmds/178-swap-prep-delim.exp: * Fix the module swap
  with the --delim option (Tyson Whitehead)

2012-10-25  R.K. Owen <rk@owen.sj.ca.us>

  * .cvsignore => .gitignore, config/{.cvsignore => .gitignore},
  doc/{.cvsignore => .gitignore}, etc/{.cvsignore => .gitignore},
  etc/global/{.cvsignore => .gitignore}, etc/skel/{.cvsignore => .gitignore},
  ext/{.cvsignore => .gitignore}, ext/common/{.cvsignore => .gitignore},
  init/{.cvsignore => .gitignore}, modulefiles/{.cvsignore => .gitignore},
  tcl/init/{.cvsignore => .gitignore}, testsuite/{.cvsignore => .gitignore},
  testsuite/etc/{.cvsignore => .gitignore}, testsuite/home/{.cvsignore =>
  .gitignore}: Moved the .cvsignore files to .gitignore

  * version.c: Check whether the bash shell is interactive or not Fixed a typo
  in the perl init script Trivial change to the version variable.

  * version.c: Trivial change to the version variable.

2012-09-10  sirdude <sirdude>

  * tcl/modulecmd.tcl: A couple of small patches by Thomas Zeiser
  thomas.zeiser@rrze.uni-erlangen.de  The first one adds some checks to make
  sure a directory is readable before trying to read it.  The second reverses
  the order of perging modules so that they are removed last to first, which
  maybe seems more intuitive?  Kent

2012-05-17  rkowen <rkowen>

  * ModuleCmd_Load.c, NEWS, modules_def.h, testsuite/modulefiles/recurs/modA,
  testsuite/modulefiles/recurs/modB,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/195-load-recurs.exp: * Fix the flags with regards
  to recursive load/unload

2012-04-11  rkowen <rkowen>

  * configure.ac: Fixed syntax error.

2012-03-20  sirdude <sirdude>

  * tcl/modulecmd.tcl: Modify getenv so it returns _UNDEFINED_ instead of
  erroring if the environment variable is not defined.  Also changed the
  display option so it returns $varname instead of [getenv $varname]  Kent

2012-03-19  sirdude <sirdude>

  * tcl/init/.cvsignore, tcl/modulecmd.tcl: Added a getenv function on the
  suggestion of a few people on the mailing list.  Thanks go to: Mark Lakata,
  Paul FM and Roberto Beccer  Let me know if there are any problems with it. I
  also snuck in a ignore line for .gitignore so I can use git locally, and
  fixed some minor whitespace issues.  Kent Mein

2011-12-13  rkowen <rkowen>

  * ModuleCmd_Update.c, testsuite/modules.70-maint/020-update.exp: Fixed the
  update test, and cleaned up the update code a bit.

2011-12-01  rkowen <rkowen>

  * main.c, utility.c: Fixed some memory issues.

  * ModuleCmd_Purge.c, ModuleCmd_Update.c, ModuleCmd_Use.c, cmdPath.c,
  cmdSetenv.c, configure.ac, testsuite/modules.00-init/080-begenv.exp,
  utility.c: Rolled in the recent 3-2-9 changes with regard to checks of the
  EMGetEnv resulting pointers.

2011-11-29  rkowen <rkowen>

  * ModuleCmd_Whatis.c: Fixed a memory error in the whatis part.

2011-11-28  rkowen <rkowen>

  * utility.c: Make sure a char *ptr is initialized to NULL.

  * ModuleCmd_Purge.c, ModuleCmd_Update.c, ModuleCmd_Use.c, NEWS, cmdPath.c,
  cmdSetenv.c, testsuite/modules.00-init/080-begenv.exp, utility.c, version.c:
  Test ptrs yielded by EMGetEnv.

2011-11-22  rkowen <rkowen>

  * testsuite/modules.00-init/010-environ.exp, utility.c: Found why the
  --with-split-size option was producing extra "unsetenv _LMFILES_000".

2011-11-21  rkowen <rkowen>

  * testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.10-use/040-load.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.30-userlvl/040-advanced.exp,
  testsuite/modules.30-userlvl/045-adv.exp,
  testsuite/modules.30-userlvl/050-expert.exp,
  testsuite/modules.30-userlvl/055-exp.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/110-verbose.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/175-swap2.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/240-chdir.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp,
  testsuite/modules.95-version/999-cleanup.exp: Have the testsuite handle when
  configured with --with-split-size, but it's assumed large enough to not
  split _LMFILES_ in the tests.

  * utility.c: Further checks for empty environment variables from EMGetEnv()
  for _LMFILES_%d

2011-11-15  rkowen <rkowen>

  * utility.c: Fixed --with-split-size problem with _LMFILES_NNN.

2011-11-11  rkowen <rkowen>

  * ChangeLog: Updated

  * ModuleCmd_List.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c,
  ModuleCmd_Update.c, ModuleCmd_Use.c, NEWS, cmdPath.c, cmdSetenv.c, init.c,
  modules_def.h, utility.c: Merged in the TclGetEnv/TclSetEnv fix from 3.2.9.

  * version.c: Reset version to 3.2.9 not 3.2.9a.

  * ChangeLog: Updated.

  * ModuleCmd_Purge.c, ModuleCmd_Update.c, ModuleCmd_Use.c, NEWS, cmdPath.c,
  cmdSetenv.c, init.c, modules_def.h, utility.c, version.c: Crucial bug fix
  ... TclGetEnv/TclSetEnv are Tcl routines, so renamed these to
  EMGetEnv/EMSetEnv.  Fix due to Orion Poplawski.

2011-11-10  rkowen <rkowen>

  * ChangeLog, NEWS: Updated with current 3.2.9 info.

  * ChangeLog: Update for distribution.

  * ChangeLog, NEWS, version.c: Preparation for distribution.

2011-10-24  rkowen <rkowen>

  * NEWS, cmdPath.c: * Removed the RegExp code from cmdPath.c (Poor Yorick)

2011-10-17  rkowen <rkowen>

  * Makefile.am, NEWS, init.c, init/Makefile.am, init/ruby.rb.in, utility.c:
  Rolled in the ruby addition from  Tammo Tjarks.

  * Makefile.am, NEWS, init.c, init/Makefile.am, init/ruby.rb.in, utility.c: *
  Added support for Ruby (Tammo Tjarks)

2011-10-13  rkowen <rkowen>

  * ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Refresh.c,
  ModuleCmd_Switch.c, NEWS, cmdConflict.c, cmdIsLoaded.c, cmdSetenv.c, init.c,
  modulefiles/module-info.in, modules_def.h, utility.c: * Fixed unload & load
  of same module problem (Bug 3211669).

2011-10-13  sirdude <sirdude>

  * tcl/testsuite/modules.10-use/030-use.exp,
  tcl/testsuite/modules.10-use/031-append.exp,
  tcl/testsuite/modules.10-use/040-load.exp,
  tcl/testsuite/modules.10-use/070-unuse.exp,
  tcl/testsuite/modules.50-cmds/015-use.exp,
  tcl/testsuite/modules.50-cmds/020-setenv.exp,
  tcl/testsuite/modules.50-cmds/030-unsetenv.exp,
  tcl/testsuite/modules.50-cmds/040-append.exp,
  tcl/testsuite/modules.50-cmds/140-system.exp,
  tcl/testsuite/modules.80-deep/020-load.exp,
  tcl/testsuite/modules.80-deep/030-display.exp,
  tcl/testsuite/modules.90-avail/020-single.exp,
  tcl/testsuite/modules.90-avail/030-multiple.exp,
  tcl/testsuite/modules.90-avail/040-wild.exp,
  tcl/testsuite/modules.90-avail/050-long.exp,
  tcl/testsuite/modules.90-avail/060-empty.exp,
  tcl/testsuite/modules.95-version/020-load.exp,
  tcl/testsuite/modules.95-version/020-unload.exp,
  tcl/testsuite/modules.95-version/022-load2.exp,
  tcl/testsuite/modules.95-version/022-unload2.exp,
  tcl/testsuite/modules.95-version/040-xgetenv.exp: Added a couple of other
  tests Also added terminators to the end of the regex tests...  Kent

2011-10-11  sirdude <sirdude>

  * tcl/modulecmd.tcl: Remove outer loop for aliases in csh/sh type shells and
  fix it so sh shells us unalias  Kent

2011-10-10  rkowen <rkowen>

  * cmdInfo.c: Even though "trace" is no longer used ... should still have
  module-info still respond with "*undef*", so older modulefiles can still be
  processed without a Tcl error.

2011-10-07  sirdude <sirdude>

  * tcl/testsuite/modules.50-cmds/020-setenv.exp,
  tcl/testsuite/modules.50-cmds/030-unsetenv.exp: Added some additional tests
  that I have converted. Still a lot of tests to add...  Kent

  * tcl/testsuite/modules.90-avail/050-long.exp: Fix this test for the tcl
  version.  Kent

  * tcl/modulecmd.tcl: This is a patch provided by Wilson Snyder to fix up the
  regsub statements  I also silenced a few warnings produced by nagelfar(a
  syntax checker for tcl) Basically it simplified a couple of the if
  statements by using a temp variable.  Kent

2011-10-06  rkowen <rkowen>

  * cmdConflict.c: Fixed bug-3300132 prereq error format problem.

  * cmdConflict.c: Fixed bug-3300132 prereq error format problem.

  * ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Load.c,
  ModuleCmd_Purge.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c, ModuleCmd_Use.c,
  ModuleCmd_Whatis.c, NEWS, cmdPath.c, cmdSetenv.c, init.c, modules_def.h,
  utility.c, utilmem.c: * Fixed the "module purge" memory corruption (Poor
  Yorick). * Isolated calls to the new interpreter and get & set env.vars.

  * NEWS, cmdPath.c, utility.c: * Fixed the module purge corruption (Poor
  Yorick)

  * NEWS: Updated with module purge fix

2011-10-03  rkowen <rkowen>

  * cmdPath.c, utility.c: Rolled in Poor Yorick's changes to Remove_Path()
  which fixes the memory corruption of "module purge".

  * ModuleCmd_Avail.c, ModuleCmd_Update.c, NEWS, cmdLog.c, cmdVersion.c,
  cmdWhatis.c, error.c, locate_module.c, modules_def.h, utility.c: *
  Optionally use Tcl memory check routines for malloc/realloc.

  * ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Load.c,
  ModuleCmd_Purge.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c, ModuleCmd_Use.c,
  ModuleCmd_Whatis.c, NEWS, cmdPath.c, cmdSetenv.c, init.c, modules_def.h,
  utility.c: * Isolated calls to the new interpreter and get & set env.vars.

2011-09-29  rkowen <rkowen>

  * testsuite/config/unix.exp: Simplified the comp_output procedure ... due to
  Poor Yorick.

  * cmdPath.c: Change the strcpy to memmove because of possible memory
  overlap.

2011-09-19  rkowen <rkowen>

  * configure.ac: Removed the explicit call to AM_PO_SUBDIRS, which is already
  invoked by the AM_GNU_GETTEXT.  Patch thanks to "Poor Yorick".

2011-09-13  sirdude <sirdude>

  * tcl/modulecmd.tcl: Patch from Andy Wettstein so that aliases work again
  with bash and other sh like shells.  Kent

2011-08-12  sirdude <sirdude>

  * tcl/modulecmd.tcl: Fix provided by Thomas Zeiser. ( A missing ; )  Kent

2011-06-17  sirdude <sirdude>

  * tcl/modulecmd.tcl: Patch by Larry Baker to bring the tcl version more
  inline with the c version.  Kent

2011-05-13  sirdude <sirdude>

  * tcl/modulecmd.tcl: Patch by Larry Baker to add a 'module aliases'
  command.  Kent

2011-05-10  sirdude <sirdude>

  * tcl/Makefile, tcl/README.txt, tcl/init/Makefile,
  tcl/windows/module-tcl-win.chm, tcl/windows/module.cmd,
  tcl/windows/moduleinit.cmd: This commit is for the tcl version of modules,
  it does some additional work on windows It updates the README file which was
  pretty sparse  It also redoes the Makefiles so that it will build a default
  modulerc file if it doesn't exist.  Kent

  * tcl/modulecmd.tcl: This should fix bug# 3097451  I haven't tested it to
  make sure and the code needs more work but it's a start.  Kent

2011-04-27  sirdude <sirdude>

  * tcl/modulecmd.tcl: Patch from Kwee Heong Tan  This provides better support
  under windows. There is still more work to do here.  Kent

2011-04-06  sirdude <sirdude>

  * tcl/testsuite/modules.10-use/040-load.exp,
  tcl/testsuite/modules.50-cmds/010-init_ts.exp,
  tcl/testsuite/modules.50-cmds/015-use.exp,
  tcl/testsuite/modules.50-cmds/999-cleanup.exp,
  tcl/testsuite/modules.95-version/010-init_ts.exp,
  tcl/testsuite/modules.95-version/020-load.exp,
  tcl/testsuite/modules.95-version/020-unload.exp,
  tcl/testsuite/modules.95-version/022-load2.exp,
  tcl/testsuite/modules.95-version/022-unload2.exp,
  tcl/testsuite/modules.95-version/040-xgetenv.exp,
  tcl/testsuite/modules.95-version/999-cleanup.exp: More test files for tcl
  version of modules.  Kent

2011-03-22  sirdude <sirdude>

  * tcl/modulecmd.tcl: Small patch from Wilson Snyder to improve python
  support.  Kent

2011-03-15  sirdude <sirdude>

  * tcl/init/csh.in, tcl/init/tcsh.in: Fix up the calls to the command so its
  not doing variable substitution all of the time.  Kent

  * tcl/Makefile, tcl/testsuite/config/unix.exp, tcl/testsuite/etc/bad,
  tcl/testsuite/etc/empty, tcl/testsuite/etc/modulerc,
  tcl/testsuite/home/.modulerc, tcl/testsuite/home/.modules,
  tcl/testsuite/home/.modules.save,
  tcl/testsuite/modulefiles.deep/modulerc/.modulerc,
  .../modulefiles.deep/modulerc/dir1/.modulerc,
  tcl/testsuite/modulefiles.deep/modulerc/dir1/1.0,
  tcl/testsuite/modulefiles.deep/modulerc/dir1/2.0,
  .../modulefiles.deep/modulerc/dir2/.modulerc,
  .../modulefiles.deep/modulerc/dir2/1.0/.modulerc,
  .../modulefiles.deep/modulerc/dir2/1.0/rc1,
  .../modulefiles.deep/modulerc/dir2/1.0/rc2,
  tcl/testsuite/modulefiles.deep/modulerc/dir2/2.0,
  tcl/testsuite/modulefiles.deep/modulerc/dir2/3.0,
  tcl/testsuite/modulefiles.deep/plain/dir1/1.0,
  tcl/testsuite/modulefiles.deep/plain/dir1/2.0,
  tcl/testsuite/modulefiles.deep/plain/dir2/1.0,
  tcl/testsuite/modulefiles.deep/plain/dir2/2.0,
  tcl/testsuite/modulefiles.deep/version/.version,
  .../modulefiles.deep/version/dir1/.version,
  tcl/testsuite/modulefiles.deep/version/dir1/1.0,
  tcl/testsuite/modulefiles.deep/version/dir1/2.0,
  .../modulefiles.deep/version/dir2/.version,
  tcl/testsuite/modulefiles.deep/version/dir2/1.0,
  .../modulefiles.deep/version/dir2/2.0/.version,
  .../modulefiles.deep/version/dir2/2.0/rc1,
  .../modulefiles.deep/version/dir2/2.0/rc2,
  tcl/testsuite/modulefiles.deep/version/dir2/3.0,
  tcl/testsuite/modulefiles.other/1.1/version,
  tcl/testsuite/modulefiles.other/1.2/version,
  tcl/testsuite/modulefiles.other/1.3/version,
  tcl/testsuite/modulefiles.other/README, tcl/testsuite/modulefiles/README,
  tcl/testsuite/modulefiles/alias/1.0, tcl/testsuite/modulefiles/alias/2.0,
  tcl/testsuite/modulefiles/append/0.1, tcl/testsuite/modulefiles/append/0.2,
  tcl/testsuite/modulefiles/append/1.0, tcl/testsuite/modulefiles/append/2.0,
  tcl/testsuite/modulefiles/append/2.1, tcl/testsuite/modulefiles/append/2.2,
  tcl/testsuite/modulefiles/break/1.0, tcl/testsuite/modulefiles/break/2.0,
  tcl/testsuite/modulefiles/break/3.0, tcl/testsuite/modulefiles/break/4.0,
  tcl/testsuite/modulefiles/chdir/1.0, tcl/testsuite/modulefiles/chdir/2.0,
  tcl/testsuite/modulefiles/chdir/3.0, tcl/testsuite/modulefiles/chdir/4.0,
  tcl/testsuite/modulefiles/conflict/full,
  tcl/testsuite/modulefiles/conflict/module,
  tcl/testsuite/modulefiles/continue/1.0,
  tcl/testsuite/modulefiles/continue/2.0,
  tcl/testsuite/modulefiles/continue/3.0,
  tcl/testsuite/modulefiles/continue/4.0, tcl/testsuite/modulefiles/empty/1.0,
  tcl/testsuite/modulefiles/eschars/1.0, tcl/testsuite/modulefiles/exit/1.0,
  tcl/testsuite/modulefiles/exit/2.0, tcl/testsuite/modulefiles/exit/3.0,
  tcl/testsuite/modulefiles/help/2.0, tcl/testsuite/modulefiles/info/isloaded,
  tcl/testsuite/modulefiles/info/mode1, tcl/testsuite/modulefiles/info/mode2,
  tcl/testsuite/modulefiles/info/mode3, tcl/testsuite/modulefiles/info/mode4,
  tcl/testsuite/modulefiles/info/mode5, tcl/testsuite/modulefiles/info/mode6,
  tcl/testsuite/modulefiles/info/name, tcl/testsuite/modulefiles/info/shells,
  tcl/testsuite/modulefiles/info/shellsexp,
  tcl/testsuite/modulefiles/info/user, tcl/testsuite/modulefiles/info/userexp,
  tcl/testsuite/modulefiles/loc_dv1/1.0,
  tcl/testsuite/modulefiles/loc_dv1/2.0,
  tcl/testsuite/modulefiles/loc_dv1/3.0,
  tcl/testsuite/modulefiles/loc_dv2/.version,
  tcl/testsuite/modulefiles/loc_dv2/1.0,
  tcl/testsuite/modulefiles/loc_dv2/2.0,
  tcl/testsuite/modulefiles/loc_dv3/.version,
  tcl/testsuite/modulefiles/loc_dv3/1.0,
  tcl/testsuite/modulefiles/loc_dv3/2.0,
  tcl/testsuite/modulefiles/loc_dv4/.version,
  tcl/testsuite/modulefiles/loc_dv4/1.0,
  tcl/testsuite/modulefiles/loc_dv4/2.0,
  tcl/testsuite/modulefiles/loc_dv6/1.0,
  tcl/testsuite/modulefiles/loc_dv6/2.0/1.0,
  tcl/testsuite/modulefiles/loc_dv7/.version,
  tcl/testsuite/modulefiles/loc_dv7/1.0,
  tcl/testsuite/modulefiles/loc_dv7/2.0/1.0,
  tcl/testsuite/modulefiles/loc_dv7/3.0,
  tcl/testsuite/modulefiles/loc_dv8/.version,
  tcl/testsuite/modulefiles/loc_dv8/1.0,
  tcl/testsuite/modulefiles/loc_dv8/2.0, tcl/testsuite/modulefiles/loc_fq/1.0,
  tcl/testsuite/modulefiles/loc_fq/2.0,
  tcl/testsuite/modulefiles/loc_rc1/.modulerc,
  tcl/testsuite/modulefiles/loc_rc1/1.0,
  tcl/testsuite/modulefiles/loc_rc1/2.0,
  tcl/testsuite/modulefiles/loc_rc2/.modulerc,
  tcl/testsuite/modulefiles/loc_rc2/1.0,
  tcl/testsuite/modulefiles/loc_rc2/2.0,
  tcl/testsuite/modulefiles/loc_rc3/.modulerc,
  tcl/testsuite/modulefiles/loc_rc3/1.0,
  tcl/testsuite/modulefiles/loc_rc3/2.0,
  tcl/testsuite/modulefiles/loc_rc3/3.0,
  tcl/testsuite/modulefiles/loc_rc4/.modulerc,
  tcl/testsuite/modulefiles/loc_rc4/.version,
  tcl/testsuite/modulefiles/loc_rc4/1.0,
  tcl/testsuite/modulefiles/loc_rc4/2.0,
  tcl/testsuite/modulefiles/loc_rc4/3.0,
  tcl/testsuite/modulefiles/loc_rc5/.modulerc,
  tcl/testsuite/modulefiles/loc_rc5/1.0,
  tcl/testsuite/modulefiles/loc_rc5/2.0,
  tcl/testsuite/modulefiles/loc_sym/1.0,
  tcl/testsuite/modulefiles/loc_sym/alias1,
  tcl/testsuite/modulefiles/loc_sym/alias2,
  tcl/testsuite/modulefiles/loc_sym/alias3,
  tcl/testsuite/modulefiles/loc_sym/alias4,
  tcl/testsuite/modulefiles/loc_sym/alias5,
  tcl/testsuite/modulefiles/loc_sym/alias6,
  tcl/testsuite/modulefiles/loc_sym/exec1,
  tcl/testsuite/modulefiles/loc_sym/exec2,
  tcl/testsuite/modulefiles/loc_sym/getvers1,
  tcl/testsuite/modulefiles/loc_sym/getvers2,
  tcl/testsuite/modulefiles/loc_sym/getvers3,
  tcl/testsuite/modulefiles/loc_sym/getvers4,
  tcl/testsuite/modulefiles/loc_sym/getvers5,
  tcl/testsuite/modulefiles/loc_sym/getvers6,
  tcl/testsuite/modulefiles/loc_sym/getvers7,
  tcl/testsuite/modulefiles/loc_sym/getvers8,
  tcl/testsuite/modulefiles/loc_sym/versinf1,
  tcl/testsuite/modulefiles/loc_sym/versinf2,
  tcl/testsuite/modulefiles/loc_sym/versinf3,
  tcl/testsuite/modulefiles/loc_sym/versinf4,
  tcl/testsuite/modulefiles/loc_sym/versinf5,
  tcl/testsuite/modulefiles/loc_sym/versinf6,
  tcl/testsuite/modulefiles/loc_sym/versinf7,
  tcl/testsuite/modulefiles/loc_sym/version1,
  tcl/testsuite/modulefiles/loc_sym/version10,
  tcl/testsuite/modulefiles/loc_sym/version11,
  tcl/testsuite/modulefiles/loc_sym/version12,
  tcl/testsuite/modulefiles/loc_sym/version13,
  tcl/testsuite/modulefiles/loc_sym/version14,
  tcl/testsuite/modulefiles/loc_sym/version2,
  tcl/testsuite/modulefiles/loc_sym/version3,
  tcl/testsuite/modulefiles/loc_sym/version4,
  tcl/testsuite/modulefiles/loc_sym/version5,
  tcl/testsuite/modulefiles/loc_sym/version6,
  tcl/testsuite/modulefiles/loc_sym/version7,
  tcl/testsuite/modulefiles/loc_sym/version8,
  tcl/testsuite/modulefiles/loc_sym/version9,
  tcl/testsuite/modulefiles/log/badfac,
  tcl/testsuite/modulefiles/log/err_both_1,
  tcl/testsuite/modulefiles/log/err_both_2,
  tcl/testsuite/modulefiles/log/err_file,
  tcl/testsuite/modulefiles/log/err_syslog,
  tcl/testsuite/modulefiles/module/2.0, tcl/testsuite/modulefiles/prepend/0.1,
  tcl/testsuite/modulefiles/prepend/0.2,
  tcl/testsuite/modulefiles/prepend/1.0,
  tcl/testsuite/modulefiles/prepend/2.0,
  tcl/testsuite/modulefiles/prepend/2.1,
  tcl/testsuite/modulefiles/prepend/2.2,
  tcl/testsuite/modulefiles/prereq/full,
  tcl/testsuite/modulefiles/prereq/module,
  tcl/testsuite/modulefiles/remove/2.0, tcl/testsuite/modulefiles/setenv/1.0,
  tcl/testsuite/modulefiles/system/2.0,
  tcl/testsuite/modulefiles/trace/all_off,
  tcl/testsuite/modulefiles/trace/all_on,
  tcl/testsuite/modulefiles/uname/domain,
  tcl/testsuite/modulefiles/uname/machine,
  tcl/testsuite/modulefiles/uname/nodename,
  tcl/testsuite/modulefiles/uname/release,
  tcl/testsuite/modulefiles/uname/sysname,
  tcl/testsuite/modulefiles/uname/version,
  tcl/testsuite/modulefiles/unsetenv/0.9,
  tcl/testsuite/modulefiles/unsetenv/1.0,
  tcl/testsuite/modulefiles/use/.version, tcl/testsuite/modulefiles/use/1.0,
  tcl/testsuite/modulefiles/use/2.0, tcl/testsuite/modulefiles/use/2.1,
  tcl/testsuite/modulefiles/use/2.2, tcl/testsuite/modulefiles/user/adv,
  tcl/testsuite/modulefiles/user/advanced, tcl/testsuite/modulefiles/user/exp,
  tcl/testsuite/modulefiles/user/expert, tcl/testsuite/modulefiles/user/nov,
  tcl/testsuite/modulefiles/user/novice, tcl/testsuite/modulefiles/user/undef,
  tcl/testsuite/modulefiles/verbose/msg,
  tcl/testsuite/modulefiles/verbose/off, tcl/testsuite/modulefiles/verbose/on,
  tcl/testsuite/modulefiles/verbose/undef,
  tcl/testsuite/modulefiles/versions/1.1,
  tcl/testsuite/modulefiles/versions/1.2,
  tcl/testsuite/modulefiles/versions/1.3,
  tcl/testsuite/modulefiles/whatis/lines,
  tcl/testsuite/modulefiles/whatis/multiple,
  tcl/testsuite/modulefiles/whatis/none,
  tcl/testsuite/modulefiles/whatis/single,
  tcl/testsuite/modulefiles/whatis/string,
  tcl/testsuite/modules.00-init/005-init_ts.exp,
  tcl/testsuite/modules.00-init/006-procs.exp,
  tcl/testsuite/modules.00-init/010-environ.exp,
  tcl/testsuite/modules.00-init/015-version.exp,
  tcl/testsuite/modules.00-init/030-shells.exp,
  tcl/testsuite/modules.00-init/050-modpath.exp,
  tcl/testsuite/modules.00-init/080-begenv.exp,
  tcl/testsuite/modules.00-init/090-switches.exp,
  tcl/testsuite/modules.10-use/010-init_ts.exp,
  tcl/testsuite/modules.10-use/030-use.exp,
  tcl/testsuite/modules.10-use/031-append.exp,
  tcl/testsuite/modules.10-use/040-load.exp,
  tcl/testsuite/modules.10-use/070-unuse.exp,
  tcl/testsuite/modules.80-deep/010-init_ts.exp,
  tcl/testsuite/modules.80-deep/020-load.exp,
  tcl/testsuite/modules.80-deep/030-display.exp,
  tcl/testsuite/modules.80-deep/040-list.exp,
  tcl/testsuite/modules.80-deep/999-cleanup.exp,
  tcl/testsuite/modules.90-avail/010-init_ts.exp,
  tcl/testsuite/modules.90-avail/020-single.exp,
  tcl/testsuite/modules.90-avail/030-multiple.exp,
  tcl/testsuite/modules.90-avail/040-wild.exp,
  tcl/testsuite/modules.90-avail/050-long.exp,
  tcl/testsuite/modules.90-avail/060-empty.exp, tcl/testsuite/not_installed,
  tcl/testsuite/systest: Finally got testfiles working with the tcl version of
  modules. There is still lots of work to be done but there are a good number
  of tests that are working. Currently 80 of 90 are passing. At this point I
  want to commit before fixing issues which involve modifying the main
  application.  Kent

  * tcl/modulecmd.tcl: This commit does a couple of things. Bring back the
  auto determine shell to call(needed for the next commit testsuite) It also
  removes the need for using a temp file This commit also has a couple of
  small fixes to make it more like the standard version of modules as far as
  output to the screen goes.  Kent

2011-02-28  sirdude <sirdude>

  * tcl/modulecmd.tcl: This commit does a few things to modulecmd.tcl  It
  cleans up some unused global vars Fixes some spacing in some report
  statements as well as fixes some debugging statements adds a ubuntu specific
  bit of code to uname so uname release returns the codename of an ubuntu
  install  Finally in getPathToModule I commented out the Check for aliases
  bit of code This is already done at the top level so no need to do it again.
  (If someone finds a case where this is needed let me know and I'll add it
  back in)  Kent

2010-11-12  rkowen <rkowen>

  * doc/module.1.in: Updated the man page with regards to the package
  modulefile directories.

  * NEWS, doc/module.1.in, doc/modulefile.4.in, init/bash.in, init/cmake.in,
  init/csh.in, init/ksh.in, init/perl.pm.in, init/python.py.in, init/sh.in,
  init/zsh.in, main.c, modulefiles/modules.in, modules_def.h: * Removed the
  $MODULESHOME env.var. which is not used at all.

  * ChangeLog, Makefile.am, NEWS, configure.ac, doc/module.1.in,
  init/.modulespath.in, init/Makefile.am, init/bash.in,
  init/bash_completion.in, init/cmake.in, init/csh.in, init/ksh.in,
  init/perl.pm.in, init/python.py.in, init/sh.in, init/zsh.in, main.c,
  modulefiles/Makefile.am: * Reworked configuration and Makefile for
  fine-grain control of certain paths and config files.

2010-11-11  rkowen <rkowen>

  * ModuleCmd_Load.c, NEWS: Rolled in the Modules 3.2.9 version. * Fix the
  coexistence of load/remove flags (Martin Siegert)

  * ModuleCmd_Load.c, NEWS: * Fix the coexistence of load/remove flags (due to
  Martin Siegert)

  * ChangeLog, Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c,
  ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c,
  ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c,
  ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c,
  NEWS, TODO, cmdAlias.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c,
  cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c,
  cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c,
  config/emtcl.m4, config/tcl.m4, configure.ac, doc/.cvsignore,
  doc/module.1.in, doc/modulefile.4.in, error.c, etc/add.modules.in,
  etc/global/bashrc.in, etc/global/csh.modules.in,
  etc/global/profile.modules.in, etc/mkroot.in, ext/add.ext.in, ext/mkroot.in,
  init.c, init/.modulespath.in, init/Makefile.am, init/bash.in, init/cmake.in,
  init/csh.in, init/ksh.in, init/perl.pm.in, init/python.py.in, init/sh.in,
  init/zsh.in, locate_module.c, main.c, modulefiles/Makefile.am,
  modulefiles/dot.in, modulefiles/module-cvs.in, modulefiles/module-info.in,
  modulefiles/modules.in, modulefiles/null.in, modulefiles/use.own.in,
  modulefiles/version.in, modules.lsm.in, modules_def.h,
  testsuite/config/unix.exp, testsuite/modulefiles.deep/modulerc/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir1/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir1/1.0,
  testsuite/modulefiles.deep/modulerc/dir1/2.0,
  testsuite/modulefiles.deep/modulerc/dir2/.modulerc,
  .../modulefiles.deep/modulerc/dir2/1.0/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir2/1.0/rc1,
  testsuite/modulefiles.deep/modulerc/dir2/1.0/rc2,
  testsuite/modulefiles.deep/modulerc/dir2/2.0,
  testsuite/modulefiles.deep/modulerc/dir2/3.0,
  testsuite/modulefiles.deep/plain/dir1/1.0,
  testsuite/modulefiles.deep/plain/dir1/2.0,
  testsuite/modulefiles.deep/plain/dir2/1.0,
  testsuite/modulefiles.deep/plain/dir2/2.0,
  testsuite/modulefiles.deep/version/.version,
  testsuite/modulefiles.deep/version/dir1/.version,
  testsuite/modulefiles.deep/version/dir1/1.0,
  testsuite/modulefiles.deep/version/dir1/2.0,
  testsuite/modulefiles.deep/version/dir2/.version,
  testsuite/modulefiles.deep/version/dir2/1.0,
  .../modulefiles.deep/version/dir2/2.0/.version,
  testsuite/modulefiles.deep/version/dir2/2.0/rc1,
  testsuite/modulefiles.deep/version/dir2/2.0/rc2,
  testsuite/modulefiles.deep/version/dir2/3.0,
  testsuite/modulefiles/break/2.0, testsuite/modulefiles/info/shellsexp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.35-trace/010-init_ts.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/078-refresh.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/100-loglevel.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/175-swap2.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/040-list.exp,
  testsuite/modules.80-deep/999-cleanup.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp, utility.c, version.c,
  xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Avail.c.src.html,
  xref/ModuleCmd_Clear.c.html, xref/ModuleCmd_Clear.c.src.html,
  xref/ModuleCmd_Display.c.html, xref/ModuleCmd_Display.c.src.html,
  xref/ModuleCmd_Help.c.html, xref/ModuleCmd_Help.c.src.html,
  xref/ModuleCmd_Init.c.html, xref/ModuleCmd_Init.c.src.html,
  xref/ModuleCmd_List.c.html, xref/ModuleCmd_List.c.src.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Load.c.src.html,
  xref/ModuleCmd_Purge.c.html, xref/ModuleCmd_Purge.c.src.html,
  xref/ModuleCmd_Refresh.c.html, xref/ModuleCmd_Refresh.c.src.html,
  xref/ModuleCmd_Switch.c.html, xref/ModuleCmd_Switch.c.src.html,
  xref/ModuleCmd_Update.c.html, xref/ModuleCmd_Update.c.src.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Use.c.src.html,
  xref/ModuleCmd_Whatis.c.html, xref/ModuleCmd_Whatis.c.src.html,
  xref/cmdAlias.c.html, xref/cmdAlias.c.src.html, xref/cmdChdir.c.html,
  xref/cmdChdir.c.src.html, xref/cmdConflict.c.html,
  xref/cmdConflict.c.src.html, xref/cmdInfo.c.html, xref/cmdInfo.c.src.html,
  xref/cmdIsLoaded.c.html, xref/cmdIsLoaded.c.src.html, xref/cmdLog.c.html,
  xref/cmdLog.c.src.html, xref/cmdMisc.c.html, xref/cmdMisc.c.src.html,
  xref/cmdModule.c.html, xref/cmdModule.c.src.html, xref/cmdPath.c.html,
  xref/cmdPath.c.src.html, xref/cmdSetenv.c.html, xref/cmdSetenv.c.src.html,
  xref/cmdTrace.c.html, xref/cmdTrace.c.src.html, xref/cmdUlvl.c.html,
  xref/cmdUlvl.c.src.html, xref/cmdUname.c.html, xref/cmdUname.c.src.html,
  xref/cmdVerbose.c.html, xref/cmdVerbose.c.src.html, xref/cmdVersion.c.html,
  xref/cmdVersion.c.src.html, xref/cmdWhatis.c.html,
  xref/cmdWhatis.c.src.html, xref/cmdXResource.c.html,
  xref/cmdXResource.c.src.html, xref/cxref.apdx.html, xref/cxref.function,
  xref/cxref.html, xref/cxref.include, xref/cxref.typedef,
  xref/cxref.variable, xref/error.c.html, xref/error.c.src.html,
  xref/getopt.c.html, xref/getopt.c.src.html, xref/init.c.html,
  xref/init.c.src.html, xref/locate_module.c.html,
  xref/locate_module.c.src.html, xref/main.c.html, xref/main.c.src.html,
  xref/utility.c.html, xref/utility.c.src.html, xref/version.c.html,
  xref/version.c.src.html: Setting up the modules-3-2-9 branch.

2010-11-04  rkowen <rkowen>

  * locate_module.c: Using a const char * to remove a compiler warning
  message.

2010-10-18  rkowen <rkowen>

  * NEWS, cmdVersion.c, doc/modulefile.4.in,
  testsuite/modulefiles.deep/modulerc/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir1/.modulerc,
  .../modulefiles.deep/modulerc/dir2/1.0/.modulerc,
  testsuite/modulefiles/loc_rc3/.modulerc,
  testsuite/modulefiles/loc_rc4/.modulerc: * Let the "module-version" command
  use a "name" of '.' for "this" module directory ... useful for deep
  modulefile directories.

2010-10-18  sirdude <sirdude>

  * tcl/modulecmd.tcl: small fixes to module-info  Kent

2010-10-14  rkowen <rkowen>

  * ModuleCmd_Avail.c, configure.ac, init.c, locate_module.c, main.c,
  modules_def.h: Added in a skipdirs object with the name of source code
  management directories to skip, unless the directory has a module dot file
  (.version or .modulerc). Fixed problem with the po/Makefile.*

2010-10-11  rkowen <rkowen>

  * cmdVersion.c, locate_module.c, modules_def.h: Rolled in some changes from
  the mfiles branch.

2010-10-08  rkowen <rkowen>

  * ModuleCmd_Avail.c, ModuleCmd_Init.c, ModuleCmd_Load.c, ModuleCmd_Purge.c,
  ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Whatis.c, cmdConflict.c,
  cmdInfo.c, cmdIsLoaded.c, cmdModule.c, cmdPath.c, cmdUname.c, cmdVersion.c,
  cmdWhatis.c, cmdXResource.c, init.c, locate_module.c, main.c, utility.c,
  utilmem.c: Simplified the conditional tests for NULL.

  * ModuleCmd_Use.c, ModuleCmd_Whatis.c, cmdChdir.c, cmdConflict.c,
  locate_module.c, modules_def.h, utility.c: Hid most of the stat() calls
  behind is_(), an internal function.

2010-10-07  rkowen <rkowen>

  * cmdVersion.c, doc/modulefile.4.in, locate_module.c,
  testsuite/modulefiles.deep/modulerc/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir1/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir1/1.0,
  testsuite/modulefiles.deep/modulerc/dir1/2.0,
  testsuite/modulefiles.deep/modulerc/dir2/.modulerc,
  .../modulefiles.deep/modulerc/dir2/1.0/.modulerc,
  testsuite/modulefiles.deep/modulerc/dir2/1.0/rc1,
  testsuite/modulefiles.deep/modulerc/dir2/1.0/rc2,
  testsuite/modulefiles.deep/modulerc/dir2/2.0,
  testsuite/modulefiles.deep/modulerc/dir2/3.0,
  testsuite/modulefiles.deep/plain/dir1/1.0,
  testsuite/modulefiles.deep/plain/dir1/2.0,
  testsuite/modulefiles.deep/plain/dir2/1.0,
  testsuite/modulefiles.deep/plain/dir2/2.0,
  testsuite/modulefiles.deep/version/.version,
  testsuite/modulefiles.deep/version/dir1/.version,
  testsuite/modulefiles.deep/version/dir1/1.0,
  testsuite/modulefiles.deep/version/dir1/2.0,
  testsuite/modulefiles.deep/version/dir2/.version,
  testsuite/modulefiles.deep/version/dir2/1.0,
  .../modulefiles.deep/version/dir2/2.0/.version,
  testsuite/modulefiles.deep/version/dir2/2.0/rc1,
  testsuite/modulefiles.deep/version/dir2/2.0/rc2,
  testsuite/modulefiles.deep/version/dir2/3.0,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.80-deep/010-init_ts.exp,
  testsuite/modules.80-deep/020-load.exp,
  testsuite/modules.80-deep/030-display.exp,
  testsuite/modules.80-deep/040-list.exp,
  testsuite/modules.80-deep/999-cleanup.exp: Rolled in the deep modulefile
  changes from version 3.2.8.

  * modulefiles/module-cvs.in, modulefiles/modules.in: Rolled in the
  modulefile changes from version 3.2.8.

  * ChangeLog, Makefile.am: Rolled in the Makefile.am / library order fix from
  version 3.2.8.

2010-10-05  rkowen <rkowen>

  * doc/module.1.in: Updated with sections on initializing modules for perl
  and python from version 3.2.8.

  * ModuleCmd_Purge.c: Merged the fix for multiple module purge from version
  3.2.8.

  * ChangeLog, NEWS, config/emtcl.m4, config/tcl.m4, configure.ac,
  testsuite/modules.70-maint/070-display.exp: Rolled in from version 3.2.8 the
  configure --with-man-path option and the fixed emtcl.m4 which corrects the
  --with-tcl and related options, and the --without-x test variance.

2010-10-04  rkowen <rkowen>

  * cmdConflict.c, doc/module.1.in, init.c, init/Makefile.am, init/cmake.in,
  init/{perl.in => perl.pm.in}, init/python.in, init/python.py.in,
  testsuite/modulefiles/info/shellsexp,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/175-swap2.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp, utility.c: Rolled in the cmake
  addition from version 3.2.8, and the new perl.pm & python.py init files.

2010-10-01  sirdude <sirdude>

  * tcl/modulecmd.tcl: Patches from John Tseng,  Fixes an issue with perl
  autoinit by adding tclsh to the call  Updates to module-version.  Kent

2010-07-27  rkowen <rkowen>

  * cmdChdir.c, init/bash_completion.in, testsuite/modulefiles/alias/1.0,
  testsuite/modulefiles/append/0.1, testsuite/modulefiles/append/0.2,
  testsuite/modulefiles/append/1.0, testsuite/modulefiles/append/2.1,
  testsuite/modulefiles/append/2.2, testsuite/modulefiles/break/4.0,
  testsuite/modulefiles/continue/1.0, testsuite/modulefiles/continue/2.0,
  testsuite/modulefiles/continue/3.0, testsuite/modulefiles/continue/4.0,
  testsuite/modulefiles/exit/1.0, testsuite/modulefiles/exit/2.0,
  testsuite/modulefiles/exit/3.0, testsuite/modulefiles/prepend/0.1,
  testsuite/modulefiles/prepend/0.2, testsuite/modulefiles/prepend/1.0,
  testsuite/modulefiles/prepend/2.1, testsuite/modulefiles/prepend/2.2,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/175-swap2.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/999-cleanup.exp: Base version is 3-2-0, then
  merged to 3-2-7.

2010-05-28  sirdude <sirdude>

  * tcl/modulecmd.tcl: Last patch from Gerrit Renker  This one makes it so
  module switch tries to swap the order if the user messed it up. If you type:
  module switch new old instead of: module switch old new it will attempt to
  correct it.  Kent

  * tcl/modulecmd.tcl: Another patch by Gerrit Renker This one makes module
  display/show more similar to the c version of modules.  Kent

  * tcl/modulecmd.tcl: Two more patches by Gerrit Renker These two clean up
  the "version" info and makes the startup files more compatable with the c
  version of modules.  Kent

  * tcl/modulecmd.tcl: This is patch #6 from Gerrit Renker This patch
  increased the CSH_LIMIT to the same as linux's default. (This seams
  reasonable, if people have older machines that have issues they can always
  drop it back down to a lower value)  Kent

  * tcl/modulecmd.tcl: This is patch #5 from Gerrit Renker This one improves
  escaping of special symbols  Kent

  * tcl/modulecmd.tcl: Patch #4 from Gerrit Renker This one cleans up dynamic
  columns and makes it autodetect  Kent

2010-05-27  sirdude <sirdude>

  * tcl/modulecmd.tcl: small typo in last patch was missing a $  Kent

  * tcl/modulecmd.tcl: Patch #3 submitted by Gerrit Renker This one fixes a
  heck of a lot of typo's. (Spelling isn't my strong suit) :)  Kent

  * tcl/modulecmd.tcl: Two patches by Gerrit Renker  The first one fixes an
  issue with sourcing a .versin/.modulerc over and over the second one fixes
  up listModules so that it behaves better. (Gerrit has submitted a number of
  patches, this is just two of them)  Kent

2010-05-24  sirdude <sirdude>

  * tcl/modulecmd.tcl: This is a patch by Gerrit Renker to fix an issue with
  _LMFILES_ not having correct data when nesting module load/unload commands
  inside of other modules.  Kent

2009-10-15  rkowen <rkowen>

  * modulefiles/.cvsignore: Ignore the generated notavail modulefile

  * NEWS, configure.ac, modulefiles/Makefile.am, modulefiles/notavail.in: *
  Added the "notavail" modulefile (as shown in man page)

  * init.c, locate_module.c, main.c: Resolved some minor warnings.

  * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Init.c, ModuleCmd_List.c,
  ModuleCmd_Load.c, ModuleCmd_Refresh.c, ModuleCmd_Switch.c,
  ModuleCmd_Whatis.c, NEWS, PROBLEMS, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c,
  cmdLog.c, cmdVersion.c, configure.ac, error.c, init.c, locate_module.c,
  main.c, modules_def.h, ovec.c, ovec.h, testsuite/etc/{rc => modulerc},
  testsuite/modules.20-locate/060-rc.exp, utility.c, utilobj.c, uvec.c: Allow
  loading and unloading the .modulerc & .version files Removed the Tcl
  intrepretor from many of the locate_modulefile utility routines. Simplified
  the error code with uvec. Added "tag" to MHash object for existence testing.
  Passes all tests but 2 generate "duplicate version symbol ... found". Merged
  in from the mfiles branch.

2009-10-12  rkowen <rkowen>

  * ChangeLog: Updated with 'mpath' merge.

  * ModuleCmd_Avail.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS,
  cmdConflict.c, cmdIsLoaded.c, locate_module.c, main.c, modules_def.h,
  testsuite/modules.10-use/040-load.exp, utility.c: Merged in the 'mpath'
  branch changes.

2009-09-22  rkowen <rkowen>

  * init/.modulespath.in, init/Makefile.am, init/bash.in, init/csh.in,
  init/ksh.in, init/python.in, init/sh.in, init/zsh.in: Merged in the final of
  the 3.2.7b changes to the init/ files.

  * Makefile.am: Added init/bash_completion.in into the distribution list.

  * init/bash.in, init/csh.in, init/ksh.in, init/python.in, init/sh.in,
  init/zsh.in: Changed the sed '\t' to a tab char so it would work on Solaris.

2009-09-02  rkowen <rkowen>

  * ChangeLog, cmdConflict.c, cmdLog.c, error.c,
  testsuite/modules.50-cmds/100-loglevel.exp, utility.c,
  xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Avail.c.src.html,
  xref/ModuleCmd_Clear.c.html, xref/ModuleCmd_Clear.c.src.html,
  xref/ModuleCmd_Display.c.html, xref/ModuleCmd_Display.c.src.html,
  xref/ModuleCmd_Help.c.html, xref/ModuleCmd_Help.c.src.html,
  xref/ModuleCmd_Init.c.html, xref/ModuleCmd_Init.c.src.html,
  xref/ModuleCmd_List.c.html, xref/ModuleCmd_List.c.src.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Load.c.src.html,
  xref/ModuleCmd_Purge.c.html, xref/ModuleCmd_Purge.c.src.html,
  xref/ModuleCmd_Refresh.c.html, xref/ModuleCmd_Refresh.c.src.html,
  xref/ModuleCmd_Switch.c.html, xref/ModuleCmd_Switch.c.src.html,
  xref/ModuleCmd_Update.c.html, xref/ModuleCmd_Update.c.src.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Use.c.src.html,
  xref/ModuleCmd_Whatis.c.html, xref/ModuleCmd_Whatis.c.src.html,
  xref/cmdAlias.c.html, xref/cmdAlias.c.src.html, xref/cmdChdir.c.html,
  xref/cmdChdir.c.src.html, xref/cmdConflict.c.html,
  xref/cmdConflict.c.src.html, xref/cmdInfo.c.html, xref/cmdInfo.c.src.html,
  xref/cmdIsLoaded.c.html, xref/cmdIsLoaded.c.src.html, xref/cmdLog.c.html,
  xref/cmdLog.c.src.html, xref/cmdMisc.c.html, xref/cmdMisc.c.src.html,
  xref/cmdModule.c.html, xref/cmdModule.c.src.html, xref/cmdPath.c.html,
  xref/cmdPath.c.src.html, xref/cmdSetenv.c.html, xref/cmdSetenv.c.src.html,
  xref/cmdUlvl.c.html, xref/cmdUlvl.c.src.html, xref/cmdUname.c.html,
  xref/cmdUname.c.src.html, xref/cmdVerbose.c.html,
  xref/cmdVerbose.c.src.html, xref/cmdVersion.c.html,
  xref/cmdVersion.c.src.html, xref/cmdWhatis.c.html,
  xref/cmdWhatis.c.src.html, xref/cmdXResource.c.html,
  xref/cmdXResource.c.src.html, xref/config.h.html, xref/config.h.src.html,
  xref/cxref.apdx.html, xref/cxref.function, xref/cxref.html,
  xref/cxref.include, xref/cxref.typedef, xref/cxref.variable,
  xref/error.c.html, xref/error.c.src.html, xref/getopt.c.html,
  xref/getopt.c.src.html, xref/init.c.html, xref/init.c.src.html,
  xref/locate_module.c.html, xref/locate_module.c.src.html, xref/main.c.html,
  xref/main.c.src.html, xref/modules_def.h.html, xref/modules_def.h.src.html,
  xref/utility.c.html, xref/utility.c.src.html, xref/version.c.html: Merged in
  the mlist code clean up changes.

2009-09-01  rkowen <rkowen>

  * ChangeLog, xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Avail.c.src.html,
  xref/ModuleCmd_Clear.c.html, xref/ModuleCmd_Clear.c.src.html,
  xref/ModuleCmd_Display.c.html, xref/ModuleCmd_Display.c.src.html,
  xref/ModuleCmd_Help.c.html, xref/ModuleCmd_Help.c.src.html,
  xref/ModuleCmd_Init.c.html, xref/ModuleCmd_Init.c.src.html,
  xref/ModuleCmd_List.c.html, xref/ModuleCmd_List.c.src.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Load.c.src.html,
  xref/ModuleCmd_Purge.c.html, xref/ModuleCmd_Purge.c.src.html,
  xref/ModuleCmd_Refresh.c.html, xref/ModuleCmd_Refresh.c.src.html,
  xref/ModuleCmd_Switch.c.html, xref/ModuleCmd_Switch.c.src.html,
  xref/ModuleCmd_Update.c.html, xref/ModuleCmd_Update.c.src.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Use.c.src.html,
  xref/ModuleCmd_Whatis.c.html, xref/ModuleCmd_Whatis.c.src.html,
  xref/cmdAlias.c.html, xref/cmdAlias.c.src.html, xref/cmdChdir.c.html,
  xref/cmdChdir.c.src.html, xref/cmdConflict.c.html,
  xref/cmdConflict.c.src.html, xref/cmdInfo.c.html, xref/cmdInfo.c.src.html,
  xref/cmdIsLoaded.c.html, xref/cmdIsLoaded.c.src.html, xref/cmdLog.c.html,
  xref/cmdLog.c.src.html, xref/cmdMisc.c.html, xref/cmdMisc.c.src.html,
  xref/cmdModule.c.html, xref/cmdModule.c.src.html, xref/cmdPath.c.html,
  xref/cmdPath.c.src.html, xref/cmdSetenv.c.html, xref/cmdSetenv.c.src.html,
  xref/cmdTrace.c.html, xref/cmdTrace.c.src.html, xref/cmdUlvl.c.html,
  xref/cmdUlvl.c.src.html, xref/cmdUname.c.html, xref/cmdUname.c.src.html,
  xref/cmdVerbose.c.html, xref/cmdVerbose.c.src.html, xref/cmdVersion.c.html,
  xref/cmdVersion.c.src.html, xref/cmdWhatis.c.html,
  xref/cmdWhatis.c.src.html, xref/cmdXResource.c.html,
  xref/cmdXResource.c.src.html, xref/config.h.html, xref/config.h.src.html,
  xref/cxref.apdx.html, xref/cxref.function, xref/cxref.html,
  xref/cxref.include, xref/cxref.typedef, xref/cxref.variable,
  xref/error.c.html, xref/error.c.src.html, xref/getopt.c.html,
  xref/getopt.c.src.html, xref/init.c.html, xref/init.c.src.html,
  xref/locate_module.c.html, xref/locate_module.c.src.html, xref/main.c.html,
  xref/main.c.src.html, xref/modules_def.h.html, xref/modules_def.h.src.html,
  xref/utility.c.html, xref/utility.c.src.html, xref/utilmem.c.html,
  xref/utilmem.c.src.html, xref/utilobj.c.html, xref/utilobj.c.src.html,
  xref/uvec.c.html, xref/uvec.c.src.html, xref/version.c.html: Updated the
  cxref pages.

  * LICENSE.LGPL, Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c,
  ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Use.c,
  ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdChdir.c, cmdConflict.c, cmdInfo.c,
  cmdIsLoaded.c, cmdLog.c, cmdModule.c, cmdPath.c, cmdSetenv.c, cmdUlvl.c,
  cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c,
  configure.ac, error.c, init.c, locate_module.c, main.c,
  modulefiles/.cvsignore, modulefiles/HOME.in, modulefiles/Makefile.am,
  modules_def.h, utility.c, utilmem.c, utilobj.c, uvec.c, uvec.h: Merging in
  the changes from the mlist branch.

2009-08-24  rkowen <rkowen>

  * cmdConflict.c: Lost value of notloaded_flag in conversion to objv.

2009-08-23  rkowen <rkowen>

  * ChangeLog: Updated.

  * ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c,
  ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Load.c,
  ModuleCmd_Purge.c, ModuleCmd_Refresh.c, ModuleCmd_Switch.c,
  ModuleCmd_Update.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, cmdAlias.c,
  cmdChdir.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c,
  cmdModule.c, cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c,
  cmdVersion.c, cmdWhatis.c, cmdXResource.c, configure.ac, error.c, getopt.c,
  init.c, locate_module.c, main.c, modules_def.h, utility.c, utilobj.c: Merged
  the nodeb branch into the main trunk.

  * ChangeLog: Updated.

  * .indent.pro, ChangeLog, Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c,
  ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Load.c,
  ModuleCmd_Refresh.c, ModuleCmd_Update.c, ModuleCmd_Use.c,
  ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdChdir.c, cmdConflict.c, cmdInfo.c,
  cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c,
  cmdUlvl.c, cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c,
  cmdXResource.c, error.c, init.c, locate_module.c, main.c, modules_def.h,
  testsuite/modulefiles/chdir/1.0, testsuite/modulefiles/chdir/2.0,
  testsuite/modulefiles/chdir/3.0, testsuite/modulefiles/chdir/4.0,
  testsuite/modules.50-cmds/240-chdir.exp, utility.c, utilobj.c: Merged in the
  btclobj1 branch changes to the main trunk - converted the module commands to
  Tcl dual-ported objects.

2009-08-18  rkowen <rkowen>

  * xref/cmdChdir.c.html, xref/cmdChdir.c.src.html: cmdChdir is now part of
  the xref mix.

2009-08-14  rkowen <rkowen>

  * Makefile.am, xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Avail.c.src.html,
  xref/ModuleCmd_Clear.c.html, xref/ModuleCmd_Clear.c.src.html,
  xref/ModuleCmd_Display.c.html, xref/ModuleCmd_Display.c.src.html,
  xref/ModuleCmd_Help.c.html, xref/ModuleCmd_Help.c.src.html,
  xref/ModuleCmd_Init.c.html, xref/ModuleCmd_Init.c.src.html,
  xref/ModuleCmd_List.c.html, xref/ModuleCmd_List.c.src.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Load.c.src.html,
  xref/ModuleCmd_Purge.c.html, xref/ModuleCmd_Purge.c.src.html,
  xref/ModuleCmd_Refresh.c.html, xref/ModuleCmd_Refresh.c.src.html,
  xref/ModuleCmd_Switch.c.html, xref/ModuleCmd_Switch.c.src.html,
  xref/ModuleCmd_Update.c.html, xref/ModuleCmd_Update.c.src.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Use.c.src.html,
  xref/ModuleCmd_Whatis.c.html, xref/ModuleCmd_Whatis.c.src.html,
  xref/cmdAlias.c.html, xref/cmdAlias.c.src.html, xref/cmdConflict.c.html,
  xref/cmdConflict.c.src.html, xref/cmdInfo.c.html, xref/cmdInfo.c.src.html,
  xref/cmdIsLoaded.c.html, xref/cmdIsLoaded.c.src.html, xref/cmdLog.c.html,
  xref/cmdLog.c.src.html, xref/cmdMisc.c.html, xref/cmdMisc.c.src.html,
  xref/cmdModule.c.html, xref/cmdModule.c.src.html, xref/cmdPath.c.html,
  xref/cmdPath.c.src.html, xref/cmdSetenv.c.html, xref/cmdSetenv.c.src.html,
  xref/cmdUlvl.c.html, xref/cmdUlvl.c.src.html, xref/cmdUname.c.html,
  xref/cmdUname.c.src.html, xref/cmdVerbose.c.html,
  xref/cmdVerbose.c.src.html, xref/cmdVersion.c.html,
  xref/cmdVersion.c.src.html, xref/cmdWhatis.c.html,
  xref/cmdWhatis.c.src.html, xref/cmdXResource.c.html,
  xref/cmdXResource.c.src.html, xref/config.h.html, xref/config.h.src.html,
  xref/cxref.apdx.html, xref/cxref.function, xref/cxref.html,
  xref/cxref.include, xref/cxref.typedef, xref/cxref.variable,
  xref/error.c.html, xref/error.c.src.html, xref/getopt.c.html,
  xref/getopt.c.src.html, xref/getopt.h.html, xref/getopt.h.src.html,
  xref/init.c.html, xref/init.c.src.html, xref/locate_module.c.html,
  xref/locate_module.c.src.html, xref/main.c.html, xref/main.c.src.html,
  xref/modules_def.h.html, xref/modules_def.h.src.html, xref/utility.c.html,
  xref/utility.c.src.html, xref/version.c.html, xref/version.c.src.html: Got
  cxref running and regenerated the cross references.

  * locate_module.c: Cleaned up a memory error and redundant code.

2009-08-13  rkowen <rkowen>

  * ChangeLog, ModuleCmd_Avail.c, ModuleCmd_Init.c, ModuleCmd_Purge.c,
  ModuleCmd_Refresh.c, ModuleCmd_Update.c, NEWS, cmdChdir.c, cmdModule.c,
  cmdVersion.c, cmdWhatis.c, cmdXResource.c, configure.ac, locate_module.c,
  main.c, modules_def.h, utility.c: * All string allocation is performed by a
  common internal routine * --disable-beginenv is now the configuration
  default

2009-08-11  rkowen <rkowen>

  * ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c,
  ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Load.c,
  ModuleCmd_Purge.c, ModuleCmd_Refresh.c, ModuleCmd_Switch.c,
  ModuleCmd_Update.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, README, TODO,
  cmdAlias.c, cmdChdir.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c,
  cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c,
  cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, configure.ac,
  doc/module.1.in, error.c, getopt.c, init.c, locate_module.c, main.c,
  modules_def.h, testsuite/modulefiles/.moduleavailcache,
  testsuite/modulefiles/.moduleavailcache.202,
  testsuite/modulefiles/.moduleavailcachedir,
  testsuite/modulefiles/.moduleavailcachedir.202,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.70-maint/060-apropos.exp, utility.c: Merged in the
  bnocache branch to the main source tree.

2009-08-10  rkowen <rkowen>

  * ChangeLog: Updated.

  * ModuleCmd_Display.c, NEWS, cmdLog.c, configure.ac, error.c, modules_def.h:
  Merged the syslogging changes from the bsyslog branch.

2009-08-03  rkowen <rkowen>

  * ChangeLog: Updated.

  * Makefile.am, NEWS, cmdInfo.c, cmdLog.c, cmdModule.c, cmdTrace.c,
  configure.ac, doc/modulefile.4.in, init.c, modulefiles/module-info.in,
  modules_def.h, testsuite/modulefiles/help/2.0,
  testsuite/modulefiles/trace/all_off, testsuite/modulefiles/trace/all_on,
  testsuite/modulefiles/trace/colon, testsuite/modulefiles/trace/dilo_onoff,
  testsuite/modulefiles/trace/disp_onoff,
  testsuite/modulefiles/trace/disptrac, testsuite/modulefiles/trace/load_all1,
  testsuite/modulefiles/trace/load_all2, testsuite/modulefiles/trace/load_on,
  testsuite/modulefiles/trace/load_onoff,
  testsuite/modulefiles/trace/load_ovr,
  testsuite/modules.35-trace/010-init_ts.exp,
  testsuite/modules.35-trace/020-default.exp,
  testsuite/modules.35-trace/030-all-on.exp,
  testsuite/modules.35-trace/031-all-off.exp,
  testsuite/modules.35-trace/040-load-all.exp,
  testsuite/modules.35-trace/041-load-all.exp,
  testsuite/modules.35-trace/042-load-on.exp,
  testsuite/modules.35-trace/043-load-onoff.exp,
  testsuite/modules.35-trace/044-load-ovr.exp,
  testsuite/modules.35-trace/050-disp-onoff.exp,
  testsuite/modules.35-trace/060-dilo-onoff.exp,
  testsuite/modules.35-trace/070-colon.exp,
  testsuite/modules.35-trace/095-cleanup.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.70-maint/070-display.exp: Merged in the bnotrace branch
  changes ... essentially removing the module-trace command.

  * init/bash_completion.in: Added bash_completion init

  * ChangeLog: Updated.

  * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c,
  ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Purge.c,
  ModuleCmd_Refresh.c, ModuleCmd_Switch.c, ModuleCmd_Update.c,
  ModuleCmd_Use.c, ModuleCmd_Whatis.c, cmdAlias.c, cmdChdir.c, cmdConflict.c,
  cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, cmdPath.c,
  cmdSetenv.c, cmdTrace.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c, cmdVersion.c,
  cmdWhatis.c, cmdXResource.c, configure.ac, doc/module.1.in,
  doc/modulefile.4.in, error.c, etc/global/bashrc.in,
  etc/global/csh.modules.in, etc/global/profile.modules.in, init.c,
  init/.modulespath.in, init/Makefile.am, init/bash.in, init/csh.in,
  init/filter, init/ksh.in, init/perl.in, init/python.in, init/sh.in,
  init/zsh.in, locate_module.c, modulefiles/Makefile.am, modules_def.h,
  utility.c, version.c: Rolled in the remaining 3.2.7 changes to the main
  branch.

2009-07-31  rkowen <rkowen>

  * ChangeLog: Updated main branch with 3.2.7 changes.

  * NEWS: Updated 3.2.7 changes.

2009-04-09  sirdude <sirdude>

  * tcl/modulecmd.tcl: This is a patch by John Tseng,  It adds the ability to
  support Dynamic columns using stty you just setenv DYNAMIC_COLUMNS 1 and it
  will start using them.  Kent

  * tcl/modulecmd.tcl: Fleshed out the debugging statements so most functions
  have them now.  Kent

2009-02-24  sirdude <sirdude>

  * tcl/modulecmd.tcl: Some more cruft removal.  Kent

  * tcl/Makefile, tcl/init/modulerc, tcl/modulecmd.tcl: added synonym of
  search for apropos/keyword Partialy contributed by Hunter Matthews.  There
  is still an issue with it though.  If you have a malformed module it will
  die.  Probably there are other commands that die as well.  Need to look at
  it more.  Kent

  * tcl/modulecmd.tcl: Cleaned up some stuff that wasn't used and also fixed
  some minor formating issues.  Kent

  * tcl/modulecmd.tcl: Updated the help dialog so its a bit more organized an
  easier to read.  Kent

  * tcl/modulecmd.tcl: Patch by Hunter Matthews to clean up the output of
  module avail a little bit.  Kent

  * tcl/modulecmd.tcl: Some patches submitted by Hunter Matthews  adds --help
  as a commandline option. fixes issues with modulerc file getting sourced
  twice in sh and tcsh shells.  Kent

2008-09-17  sirdude <sirdude>

  * tcl/modulecmd.tcl: Small patch for differences in glob on various
  platforms. Contributed by Thomas Zeiser  Kent

2008-02-20  rkowen <rkowen>

  * NEWS, cmdPath.c, configure.ac, init/bash.in,
  testsuite/modulefiles/append/2.1, testsuite/modulefiles/append/2.2,
  testsuite/modulefiles/prepend/2.1, testsuite/modulefiles/prepend/2.2,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/175-swap2.exp: Rolled in the 3.2.7 changes so far.

2007-10-29  rkowen <rkowen>

  * ModuleCmd_Avail.c, NEWS: Rolled in the skip .git version control dirs in
  modulefile dirs.

2007-10-23  sirdude <sirdude>

  * tcl/modulecmd.tcl: updated ignored directories to include .svn and .git
  Thanks to John Tseng.  Kent

2007-09-05  sirdude <sirdude>

  * tcl/modulecmd.tcl: Made it so that module use and module unuse work the
  same way, I also added a little debugging info for both of them.  Kent

2007-05-16  sirdude <sirdude>

  * tcl/modulecmd.tcl: update to replaceFromList  patch from Olly. adds a fix
  for when item2 is empty.  Kent

  * tcl/modulecmd.tcl: Another great little patch by Olly Stephens,  This one
  makes it so that if a module has an error message in it module help
  (modulefile) will still attempt to call the help function for that module.
  Kent

  * tcl/modulecmd.tcl: Another patch by Olly,  This one extends some of the
  shortcuts accepted. example module lo blah   now works just like module load
  blah Its not perfect but again better than what is there currently.  Kent

  * tcl/modulecmd.tcl: Another patch by Olly,  This one makes it so that help
  is displayed if a user types an invalid module command (Example: module
  blah)  or if a user just types module with no args.  Kent

  * tcl/modulecmd.tcl: Patch by Olly,  Forces 0600 mode on the tmpfile when
  opening it. Really we need to figure out how to remove the need for a
  tmpfile, until then though this is still better than it was.  Kent

2007-02-22  rkowen <rkowen>

  * NEWS, locate_module.c: Rolled in 3.2.6 realloc() fix.

2007-02-14  rkowen <rkowen>

  * NEWS, testsuite/modules.50-cmds/095-uname.exp: Rolled in 3.2.5 changes to
  the uname test

  * ModuleCmd_Avail.c, ModuleCmd_Update.c, ModuleCmd_Whatis.c, cmdConflict.c,
  cmdLog.c, cmdModule.c, cmdTrace.c, cmdVersion.c, cmdWhatis.c,
  cmdXResource.c, error.c, init.c, locate_module.c, modules_def.h, utility.c:
  Rolled in the 3.2.5 module_malloc() wrapper.

2007-02-09  rkowen <rkowen>

  * contrib/modules.ebuild: Gentoo ebuild script for modules, contributed by
  Peter Fischer <peter.fischer@terrasel.de>

2006-12-19  sirdude <sirdude>

  * tcl/modulecmd.tcl: updated module list so it skips modules with no name
  for -l and -t (it now handles them like module list without options)  Kent

2006-12-13  sirdude <sirdude>

  * tcl/modulecmd.tcl: Fix provied by Eric Mastromarc reference counting was
  not working for unload-path now it is again.  Kent

2006-12-12  sirdude <sirdude>

  * tcl/modulecmd.tcl: Modified prereq so its a logical OR for multiple
  modulefies on one command line.  example: prereq foo bar If you want it foo
  AND bar do: prereq foo prereq bar  Patch done by Chris Pruett  Kent

2006-12-07  sirdude <sirdude>

  * tcl/modulecmd.tcl: Patch provided by  Thomas Zeiser,  better fix for
  reverting header to find dynamically what version of tclsh to use.  It also
  now sorts output of module avail.  Kent

  * tcl/modulecmd.tcl: reverting commit 1.75 where I removed the header
  section that finds tclsh.  Kent

2006-09-13  sirdude <sirdude>

  * tcl/modulecmd.tcl: Changed (VAR)_modshare back to use g_def_seperator
  instead of user defined variable.  Currently there is an issue with doing
  something like append-path -delem " " PATH /usr/bin append-path -delem " "
  PATH /usr/local/bin append-path -delem ":" PATH /usr/sbin  then loading that
  module and unloading it... Because of the mixed delimiters the unload does
  not work properly. It at least works for the basic case now though.  Kent

2006-09-07  sirdude <sirdude>

  * tcl/modulecmd.tcl: changed syntax of specifying a delimitor to match c
  version of modules and also made sure you can use " " and { } as a
  delimitor.  Thanks go to Dr Reinhold Bader for this fix....  Kent

2006-08-23  sirdude <sirdude>

  * tcl/modulecmd.tcl: "module use"   (without args) was broken, now its fixed
  again.  Kent

  * tcl/modulecmd.tcl: fixed revision variable stuff.  Kent

  * tcl/modulecmd.tcl: Added in cvs revision variables so that module help
  prints out what version of cvs file was checked out.  Kent

2006-08-16  sirdude <sirdude>

  * tcl/modulecmd.tcl: this is a pathetic commit ;)  Modified the comment for
  g_user so that it says the right thing.  Kent

2006-08-15  sirdude <sirdude>

  * tcl/modulecmd.tcl: This commit removes the remaining warnings generated by
  nagelfar redid a couple of calls to interp eval recoded the replaceFromList
  function so it uses lreplace removed the removeFromList function and made it
  call replaceFromList instead...  I also added _LMFILES_ environment variable
  haven't done anything with it yet though.  (intent is to use it in unloading
  a module)  Kent

  * tcl/modulecmd.tcl: removed all of the hardcoded default path seperators
  ":" and replaced with a variable.  Kent

2006-08-14  sirdude <sirdude>

  * tcl/init/.cvsignore: added scripts that get created so that they don't
  show up in cvs update...  Kent

  * tcl/modulecmd.tcl: fixed a few calls to catch and made sure they called it
  in a similar manor... (there are two more left that are slightly different
  but I didn't take the time to figure them out)  one of the fixes was posted
  by Chris Pruett, and I just applied it where it needed it... :)  Kent

  * tcl/modulecmd.tcl: added an else statement that I dropped by accident when
  merging module command and module command help slave functions...  Also
  reran frink so it looks pretty again...  Kent

2006-08-13  sirdude <sirdude>

  * tcl/modulecmd.tcl: more work on seperator specification. (removing
  hardcoded ":"'s  Kent

  * tcl/modulecmd.tcl: combined a couple of duplicate statements in a switch.
  Kent

  * tcl/modulecmd.tcl: Start of allowing a spwcified seperator for commands.
  Still needs a lot of work...  Kent

  * tcl/modulecmd.tcl: made module switch behave like it use to... (Sorry it
  took so long to switch it back)  now it does not recursively unload and
  reload modules... This way seems more flexable and more intunitive to users.
  Kent

2006-08-12  sirdude <sirdude>

  * tcl/modulecmd.tcl: by accident shut off showing default module files....
  Turning it back on.  Kent

  * tcl/modulecmd.tcl: module avail with flag_default_dir was broken This
  fixes it.  Kent

  * tcl/modulecmd.tcl: Null module was causing problems with module avail -l
  There were some odd settings for null which I just changed to "" everything
  seems to work better this way so going to commit it.  Kent

  * tcl/modulecmd.tcl: Updated the help section so its more like the binary
  module command...  Kent

  * tcl/init/bash.in, tcl/init/ksh.in, tcl/init/zsh.in: fix up bash's friends
  so they work properly...  Kent

  * tcl/modulecmd.tcl: updated module-info so that it works with the
  module-info module for the most part.  There is still some work here.  Patch
  submitted by Mark Moraes  Kent

2006-08-11  sirdude <sirdude>

  * tcl/Makefile, tcl/modulecmd.tcl, testsuite/config/unix.exp: updated Make
  test so it "works" again... combined functions for looking at .version and
  modulerc files...  Kent

  * tcl/modulecmd.tcl: This one has been on my todo list for awhile now.
  Reduced redundant code and made the slave for module help and executing a
  module one function.  Kent

  * tcl/modulecmd.tcl: removed the following functions: module-log
  module-verbosity module-user module-trace  they were empty, if anyone ever
  decides to do them they can add them back in. just trying to make this thing
  a little leaner ;)  Kent

  * tcl/modulecmd.tcl: ran frink -e to make things look pretty again ;)  Kent

  * tcl/modulecmd.tcl: I used nagelfar.tcl (http://nagelfar.berlios.de/) a tcl
  syntax checker and cleaned up most warnings from it. found a couple of typos
  as well because of it....  Kent

  * tcl/modulecmd.tcl: another typo.  (was missing a $ for a variable)  Kent

  * tcl/modulecmd.tcl: Removed the code to find tclsh since its in the init
  scripts no reason to duplicate it and probably will speed things up a bit
  keeping it in the init files.  Kent

  * tcl/modulecmd.tcl: On irix with an older version of tclsh I was getting
  errors with reportWarning and reportInternalBug  not being defined when
  there was a malformed module...  made it so they were copied over to the
  slave where needed.  Kent

  * tcl/modulecmd.tcl: missed some prints to stderr and I also fixed some
  typos...  Kent

  * tcl/modulecmd.tcl: made $contact = emailaddress and modified
  reportInternalError so it prints out the contact email address.  Kent

  * tcl/modulecmd.tcl: moved all puts stderr's to one of the report functions.
  This could still use some cleaning up.  (not really sure we need 3 report
  functions) but its at least a little nicer. (Was thinking about changing it
  to echo "$msg" instead of sending it to stderr... that way you could do
  things like module avail | more and it would work...  Need to do some more
  testing on it though :)  Kent

  * tcl/init/csh.in, tcl/init/tcsh.in: removed extra quotes that didn't need
  to be there.  Kent

2006-06-15  rkowen <rkowen>

  * locate_module.c: Rolled in 3.2.4 graceful handling of empty MODULEPATH
  dirs.

2006-06-02  rkowen <rkowen>

  * ChangeLog: update main.

2006-06-01  rkowen <rkowen>

  * NEWS, doc/module.1.in, doc/modulefile.4.in, etc/add.modules.in,
  etc/mkroot.in, ext/add.ext.in, ext/mkroot.in, init/.modulespath.in,
  init/Makefile.am, init/bash.in, init/ksh.in, init/sh.in, init/zsh.in,
  modulefiles/dot.in, modulefiles/module-cvs.in, modulefiles/module-info.in,
  modulefiles/modules.in, modulefiles/null.in, modulefiles/use.own.in,
  modulefiles/version.in: Rolled in the 3.2.3 top_builddir and
  @configure_input\@ changes.

  * NEWS, cmdPath.c, doc/modulefile.4.in, locate_module.c, modules_def.h,
  testsuite/modulefiles/append/1.0, testsuite/modulefiles/prepend/1.0,
  testsuite/modules.50-cmds/042-append-delim.exp,
  testsuite/modules.50-cmds/047-app-del-undo.exp,
  testsuite/modules.50-cmds/052-prepend-delim.exp,
  testsuite/modules.50-cmds/057-pre-del-undo.exp: Rolled in the 3.2.3
  prepend-path/append-path --delim changes.

  * ModuleCmd_Init.c, cmdConflict.c, cmdIsLoaded.c, cmdPath.c,
  locate_module.c, main.c, modules_def.h: Rolled in the pre-changes for
  handling arbitrary delimiters for lists (instead of ':').

2006-05-31  sirdude <sirdude>

  * tcl/modulecmd.tcl: * minor typos in error output fixed * support for
  modules which are known to have no dependencies. Presently a  module switch
  foo/4 foo/5  will reload all modules which have been loaded after foo. But
  sometimes this may be a nuisance, especially if module files implement their
  own reloading mechanism. Hence the modules entered as a ":" separated list
  into the environment variable MODULE_NORELOAD will not be reloaded during a
  module switch. The "module reload" command however still reloads the complet
  e module set. This is upward compatible since the original functionality is
  re tained if MODULE_RELOAD is left empty.  patch provided by Dr. Reinhold
  Bader  Kent

2006-05-25  rkowen <rkowen>

  * ChangeLog, modules.lsm.in: Merged in the working LSM from 3.2.2

  * ChangeLog, NEWS, testsuite/modulefiles/alias/1.0,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/076-alias-sub.exp,
  testsuite/modules.50-cmds/078-refresh.exp, utility.c: Rolled in the 3.2.3
  changes * the set-alias command will for Bourne shell derivatives substitute
  the safe ${1+"$@"} for $*.

2006-05-19  rkowen <rkowen>

  * Makefile.am, NEWS, init.c: Rolled in the TclX changes from 3-2-2.

2006-05-15  rkowen <rkowen>

  * NEWS, error.c, main.c, testsuite/modules.35-trace/010-init_ts.exp,
  testsuite/modules.50-cmds/100-loglevel.exp: Rolled in the syslog related
  changes from 3.2.3

2006-05-12  rkowen <rkowen>

  * NEWS: Added a section for 3.3.x

  * NEWS, cmdVersion.c: Folded in dgoldendias patch.

  * ChangeLog, modules.lsm.in: Added the Title line, which must have gotten
  lost in previous edits.

2006-05-04  rkowen <rkowen>

  * ChangeLog, NEWS, config/emtcl.m4, config/tcl.m4, configure.ac, main.c:
  Rolled in the 3.2.2 configure changes to the main development trunk.

2006-05-01  rkowen <rkowen>

  * ModuleCmd_List.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c,
  ModuleCmd_Whatis.c, cmdLog.c, configure.ac, error.c, locate_module.c,
  modules_def.h, testsuite/modulefiles/append/0.1,
  testsuite/modulefiles/append/0.2, testsuite/modulefiles/prepend/0.1,
  testsuite/modulefiles/prepend/0.2, testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp, utility.c: Rolled in the
  xstrtok changes and tests from modules-3-2-2.

2006-04-10  rkowen <rkowen>

  * ChangeLog, init/Makefile.am: Change from using . & .. to $(srcdir) and
  $(top_srcdir) respectively. (Thanks to suggestion from Boris Boesler
  <boesler.AT.ifn.et.tu-dresden.de>)

2006-03-23  rkowen <rkowen>

  * init/csh.in: Rolled in init csh fix from 3.2.1

  * ChangeLog: update.

  * init/csh.in, testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.90-avail/050-long.exp, version.c: Merged in the 3.2.1
  changes.

2006-03-07  rkowen <rkowen>

  * ModuleCmd_Load.c, NEWS, cmdModule.c, doc/modulefile.4.in, main.c,
  modules_def.h, testsuite/config/unix.exp, testsuite/modulefiles/break/2.0,
  testsuite/modulefiles/break/4.0, testsuite/modulefiles/continue/1.0,
  testsuite/modulefiles/continue/2.0, testsuite/modulefiles/continue/3.0,
  testsuite/modulefiles/continue/4.0, testsuite/modulefiles/exit/1.0,
  testsuite/modulefiles/exit/2.0, testsuite/modulefiles/exit/3.0,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/210-exit.exp,
  testsuite/modules.50-cmds/220-continue.exp,
  testsuite/modules.50-cmds/230-loop.exp,
  testsuite/modules.50-cmds/999-cleanup.exp, utility.c: Rolled in the 3.2.0
  exit changes.

2006-02-09  rkowen <rkowen>

  * init/Makefile.am: Fixed the tcsh target.

2006-02-06  rkowen <rkowen>

  * cmdModule.c, cmdPath.c, init.c, modules_def.h: Rolled in the
  Tcl_GetStringResult() changes from 3.2.0

  * modulefiles/lang/.mklang: Fine-tuned the logic of dealing with $LANG and
  $LANG_STACK. Added some target language verbage.

  * .cvsignore, ChangeLog, Makefile.am, modulefiles/Makefile.am,
  modulefiles/lang/.cvsignore, modulefiles/lang/.mklang, po/.cvsignore,
  po/ChangeLog, po/LINGUAS, po/Makevars, po/POTFILES.in: Added the lang
  modulefiles and upgraded the Makefile.am-s to create a working distribution
  tar ball.

2006-02-05  rkowen <rkowen>

  * Makefile.am: After 'gettextize'.

  * configure.ac: The changes of 'gettextize', note that autopoint is not too
  smart with AC_CONFIG_AUX_DIR ... it appends on any text after macro to the
  directory name.  So do not add 'dnl' for comments or to escape the \n.

2006-02-04  rkowen <rkowen>

  * ChangeLog: Updated.

  * version.c: The current version for the i18n mods is 3.3 alpha

  * main.c: Alert translators to the "common" strings.

  * error.c: Fixed grammar error.

  * utility.c: [ 730293 ] remove-path won't remove paths with a $ in it. Made
  the change and the tests ran fine.  I'm not sure what cleanse_path() is
  supposed to do.

  * init.c: [ 672612 ] Tcl command execution failed and modules use pointed
  out the use of the deprecated Tcl fn Tcl_VarEval(). Replaced this with
  Tcl_Eval() and added some Tcl logic to handle when $auto_path is not set.

  * init/perl.in: Fixed where it needs to reference $ENV{...} [ 705033 ] Bug
  in init/perl

  * init/perl.in: Added 1 at end so perl/init can be used by the perl require.

  * cmdConflict.c: Removed i18n from the debugging statements ... not
  necessary.

  * Makefile.am, utility.c: Rolled in the changes from 3-2-0 patch1

2006-01-31  rkowen <rkowen>

  * ModuleCmd_Avail.c, ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c,
  ModuleCmd_Update.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c, cmdConflict.c,
  cmdModule.c, cmdUname.c, cmdVersion.c, cmdXResource.c, configure.ac,
  error.c, getopt.c, init.c, locate_module.c, main.c, modules_def.h,
  utility.c: First pass through tagging all the translateable text with
  _(...), etc. for easy extraction by xgettext.  Passes all tests.

2006-01-26  rkowen <rkowen>

  * Makefile.am, configure.ac, main.c, modules_def.h: Setting up autoconf for
  handling i18n & l10n.

  * configure.ac: The AC_AIX check needs to be before any compiler tests.
  Added the AM_GNU_GETTEXT macro for i18n & l10n.

2006-01-23  rkowen <rkowen>

  * Makefile.am, modules.lsm.in: Updated for LSM version 4

2006-01-19  rkowen <rkowen>

  * ChangeLog, Makefile.am, modules.lsm.in: Changed from sunsite to ibiblio
  (same thing though).

  * modules.lsm.in: Can't ftp into the SourceForge.net site.

2006-01-18  rkowen <rkowen>

  * version.c: Ready for the 3.2.0 release

  * ChangeLog, xref/config.h.html, xref/config.h.src.html: Updated.

  * xref/cmdModule.c.html, xref/cmdModule.c.src.html, xref/cmdPath.c.html,
  xref/cmdXResource.c.html, xref/cmdXResource.c.src.html,
  xref/cxref.apdx.html, xref/cxref.function, xref/modules_def.h.src.html,
  xref/utility.c.html, xref/utility.c.src.html: Updated.

  * MACHINES, NEWS: News about eliminating --with-force-path.

2006-01-17  rkowen <rkowen>

  * ChangeLog, README, cmdModule.c, configure.ac, modules_def.h, utility.c:
  Removed the --with-force-path option ... which basically makes sure that
  PATH and LD_LIBRARY_PATH have some minimum values, given by a couple of
  MODULE_*_SACRED env.vars.  If you need something like this, then you've
  probably written your modulefiles wrong!

  * cmdXResource.c: Eliminated the C++ style commented lines.

  * config/emtcl.m4: Shortened option to --with-tcl-ver and fixed some minor
  problems with it.

  * configure.ac: Fixed what happens when no /bin/csh and the split_size is
  not set.

  * utility.c: Add some casts to eliminate warning messages.

2006-01-12  rkowen <rkowen>

  * ChangeLog: Updated

  * cvs2cl.pl: Don't need to track xref/ changes.

  * ChangeLog: Updated.

  * xref/cxref.variable, xref/main.c.html, xref/main.c.src.html,
  xref/modules_def.h.html, xref/modules_def.h.src.html, xref/version.c.html,
  xref/version.c.src.html: Updated the cxref docs

  * ChangeLog: Updated.

  * ChangeLog, version.c: Updated version date.

  * main.c, modules_def.h: Have --version list out the version date also.

  * testsuite/home/.cvsignore: Ignore the test generated file.

  * testsuite/home/.modules: This gets made when a test is performed.

  * xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Avail.c.src.html,
  xref/ModuleCmd_Clear.c.html, xref/ModuleCmd_Clear.c.src.html,
  xref/ModuleCmd_Display.c.html, xref/ModuleCmd_Display.c.src.html,
  xref/ModuleCmd_Help.c.html, xref/ModuleCmd_Help.c.src.html,
  xref/ModuleCmd_Init.c.html, xref/ModuleCmd_Init.c.src.html,
  xref/ModuleCmd_List.c.html, xref/ModuleCmd_List.c.src.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Load.c.src.html,
  xref/ModuleCmd_Purge.c.html, xref/ModuleCmd_Purge.c.src.html,
  xref/ModuleCmd_Refresh.c.src.html, xref/ModuleCmd_Switch.c.html,
  xref/ModuleCmd_Switch.c.src.html, xref/ModuleCmd_Update.c.src.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Use.c.src.html,
  xref/ModuleCmd_Whatis.c.html, xref/ModuleCmd_Whatis.c.src.html,
  xref/cmdAlias.c.html, xref/cmdAlias.c.src.html, xref/cmdConflict.c.html,
  xref/cmdConflict.c.src.html, xref/cmdInfo.c.html, xref/cmdInfo.c.src.html,
  xref/cmdIsLoaded.c.html, xref/cmdIsLoaded.c.src.html, xref/cmdLog.c.html,
  xref/cmdLog.c.src.html, xref/cmdMisc.c.html, xref/cmdMisc.c.src.html,
  xref/cmdModule.c.html, xref/cmdModule.c.src.html, xref/cmdPath.c.html,
  xref/cmdPath.c.src.html, xref/cmdSetenv.c.html, xref/cmdSetenv.c.src.html,
  xref/cmdTrace.c.html, xref/cmdTrace.c.src.html, xref/cmdUlvl.c.html,
  xref/cmdUlvl.c.src.html, xref/cmdUname.c.html, xref/cmdUname.c.src.html,
  xref/cmdVerbose.c.html, xref/cmdVerbose.c.src.html, xref/cmdVersion.c.html,
  xref/cmdVersion.c.src.html, xref/cmdWhatis.c.html,
  xref/cmdWhatis.c.src.html, xref/cmdXResource.c.html,
  xref/cmdXResource.c.src.html, xref/config.h.html, xref/config.h.src.html,
  xref/error.c.html, xref/error.c.src.html, xref/getopt.c.html,
  xref/getopt.c.src.html, xref/init.c.html, xref/init.c.src.html,
  xref/locate_module.c.html, xref/locate_module.c.src.html, xref/main.c.html,
  xref/main.c.src.html, xref/modules_def.h.html, xref/modules_def.h.src.html,
  xref/utility.c.html, xref/utility.c.src.html, xref/version.c.src.html:
  Updated the cxref docs to 3.2.0rc4

  * .cvsignore, doc/.cvsignore, etc/.cvsignore, init/.cvsignore: More things
  to ignore.

  * ModuleCmd_Init.c, NEWS, version.c: Reworked the "module init*" subcommand
  to handle dot files with multiple "module load" lines.

  * INSTALL: Added the documentation related to --with-tcl-*.

  * config/emtcl.m4, config/tcl.m4, configure.ac: Reintroduced (or added) the
  configure options --with-tcl-{versions|lib|include} to allow the user to
  specify any values which may be missing from the tclConfig.sh script.

  * testsuite/home/.modules, testsuite/home/.modules.save,
  testsuite/modules.60-initx/005-init.exp,
  testsuite/modules.60-initx/010-list.exp,
  testsuite/modules.60-initx/020-add.exp,
  testsuite/modules.60-initx/030-switch.exp,
  testsuite/modules.60-initx/040-prepend.exp,
  testsuite/modules.60-initx/050-rm.exp,
  testsuite/modules.60-initx/060-2nd.exp,
  testsuite/modules.60-initx/095-cleanup.exp: Added a test suite for the
  "module init*" subcommands.

  * testsuite/modules.50-cmds/070-alias-proc.exp: Use the "native" Tcl file
  remove command.

  * utility.c: Minor formatting changes.

  * modules_def.h: Minor reformatting.

  * Makefile.am: Added INSTALL.RH7x to the distribution pkg.

2005-12-15  rkowen <rkowen>

  * ChangeLog: Update ChangeLog

  * ChangeLog, INSTALL: Updating the INSTALL doc for 3.2.0

  * version.c: Time for the 3.2.0 release

2005-12-14  sirdude <sirdude>

  * tcl/modulecmd.tcl: Added the system command.  Kent

2005-12-13  sirdude <sirdude>

  * tcl/modulecmd.tcl: Fix by Marcus Wagner.  Makes it so module unload works
  the same way module load does. Specifically for the break command.  Kent

2005-12-12  sirdude <sirdude>

  * tcl/modulecmd.tcl: Fix provided by Mark Moraes.  Prevents modulefilename
  collisions by prepending slaves with __ before commit if you had a module
  file named: module-info and tried to do a module show module-info you would
  get: bad option "mode": must be alias, aliases, eval, expose, hide, hidden,
  issafe, invokehidden, or marktrusted invoked from within "module-info mode
  whatis " Now it works.  Kent

  * tcl/modulecmd.tcl: removed unused variable junk from 3 places in the code.
  (was just setting it to "" in all 3 places)  Kent

2005-12-06  rkowen <rkowen>

  * ChangeLog: Updated.

2005-12-05  rkowen <rkowen>

  * ChangeLog, cvs2cl.pl: Changed the ChangeLog script to not record changes
  about itself to itself.

  * testsuite/modules.50-cmds/170-swap.exp: Added more single argument "swap"
  tests.

  * ChangeLog, Makefile.am, NEWS, cvs2cl.pl, stripmkf, version.c: Added the
  cvs2cl.pl perl script for generating the ChangeLog semi-automatically.
  Removed stripmkf - an artifact from older releases.

  * ChangeLog, etc/Makefile.am, ext/Makefile.am: Put the add.modules/add.ext &
  mkroot scripts under the --prefix bin directory since those scripts are
  platform independent, and the modules modulefile will point to these
  scripts.

2005-12-02  rkowen <rkowen>

  * ChangeLog, configure.ac, init/Makefile.am, modulefiles/Makefile.am: Put
  the init/ scripts under the --exec-prefix directory, because they point to
  the platform specific modulecmd.

2005-11-30  rkowen <rkowen>

  * ChangeLog, cmdSetenv.c, configure.ac, init/.modulespath.in,
  modulefiles/Makefile.am, modules_def.h, utility.c, version.c: * Eliminated
  any warnings caused by using Tcl 8.4 * Fixed any mixed size differences when
  using ints and pointers. (Only an issue with 64 bit machines.)

2005-11-29  rkowen <rkowen>

  * ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c,
  ModuleCmd_Help.c, ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Switch.c,
  ModuleCmd_Whatis.c, cmdAlias.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c,
  cmdLog.c, cmdMisc.c, cmdTrace.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c,
  cmdVersion.c, cmdWhatis.c, error.c, getopt.c, init.c, locate_module.c,
  main.c, utility.c: Made all the 'First Edition' years to be 4 digits.

  * ModuleCmd_Clear.c, ModuleCmd_Init.c, ModuleCmd_Purge.c,
  ModuleCmd_Refresh.c, ModuleCmd_Update.c, ModuleCmd_Use.c, cmdAlias.c,
  cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c,
  cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c,
  cmdVersion.c, cmdWhatis.c, cmdXResource.c, init.c, locate_module.c, main.c,
  modules_def.h, utility.c, version.c: Added the CONST84 qualifier to
  eliminate compiler warnings, and the side effects.

2005-11-27  rkowen <rkowen>

  * config/tcl.m4: It's not an error (exit) if it can't find tclxConfig.sh!

2005-11-26  rkowen <rkowen>

  * Makefile.am: Should read the sf.net file-release-system notes before
  changing the ftp-sourceforge target.

  * Makefile.am, configure.ac, modules.lsm.in: Updated the LSM and the
  creation and handling of distribution tarballs.

  * Makefile.am, modulefiles/Makefile.am: Rolled in the Make versioning
  install fragment from the predeep branch.

2005-11-25  rkowen <rkowen>

  * xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Display.c.html,
  xref/ModuleCmd_Refresh.c.html, xref/ModuleCmd_Refresh.c.src.html,
  xref/ModuleCmd_Update.c.html, xref/ModuleCmd_Update.c.src.html,
  xref/cmdConflict.c.html, xref/cmdConflict.c.src.html,
  xref/cmdInfo.c.src.html, xref/cmdModule.c.html, xref/cmdModule.c.src.html,
  xref/cmdPath.c.html, xref/cmdPath.c.src.html, xref/cmdSetenv.c.html,
  xref/cmdSetenv.c.src.html, xref/cmdTrace.c.html, xref/cmdTrace.c.src.html,
  xref/cmdUlvl.c.html, xref/cmdUlvl.c.src.html, xref/cmdWhatis.c.html,
  xref/config.h.html, xref/config.h.src.html, xref/cxref.apdx.html,
  xref/cxref.css, xref/cxref.function, xref/cxref.html, xref/cxref.include,
  xref/cxref.variable, xref/error.c.html, xref/init.c.html, xref/main.c.html,
  xref/main.c.src.html, xref/modules_def.h.html, xref/modules_def.h.src.html,
  xref/utility.c.html, xref/version.c.html, xref/version.c.src.html: Updated
  the cxref docs with the "refresh" changes.

  * Makefile.am: Need to include ./docs in SUBDIRS

  * configure.ac, testsuite/modules.50-cmds/070-alias-proc.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/078-refresh.exp: Finished the alias/refresh tests
  for sourcing a tmpfile, and also the special case for the Bourne shell where
  funcs and no aliases.

2005-11-22  rkowen <rkowen>

  * ModuleCmd_Refresh.c, ModuleCmd_Update.c, main.c,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.50-cmds/070-alias-proc.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/078-refresh.exp: Cleaned up the test proc code,
  and normalized the "refresh" code to the existing standard.

2005-11-21  rkowen <rkowen>

  * ChangeLog, Makefile.am, ModuleCmd_Refresh.c, cmdConflict.c, cmdInfo.c,
  cmdModule.c, cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c, doc/module.1.in,
  main.c, modules_def.h: * ModuleCmd_Refresh.c: Like "update" but refreshes
  only the non-persistent attributes of the currently loaded modules,
  regardless of the state of the loaded modules (i.e. refresh aliases). (still
  needs some test code)

  * ChangeLog, cmdConflict.c, version.c: * cmdConflict.c: Fixed memory
  allocation bug in cmdPrereq(). When there is more than 1 argument to the
  prereq command, both savedlens and savedlists were indexed past what the
  initial malloc allowed.

2005-11-15  sirdude <sirdude>

  * tcl/modulecmd.tcl: Updated alias function so that it also works on ksh. I
  tested it on a couple of different sh shells and everything seems to work
  this way, and it wasn't working on some of them before.  Kent

2005-11-15  rkowen <rkowen>

  * .cxref, Makefile.am, xref/ModuleCmd_Avail.c.html,
  xref/ModuleCmd_Avail.c.src.html, xref/ModuleCmd_Clear.c.html,
  xref/ModuleCmd_Clear.c.src.html, xref/ModuleCmd_Display.c.html,
  xref/ModuleCmd_Display.c.src.html, xref/ModuleCmd_Help.c.html,
  xref/ModuleCmd_Help.c.src.html, xref/ModuleCmd_Init.c.html,
  xref/ModuleCmd_Init.c.src.html, xref/ModuleCmd_List.c.html,
  xref/ModuleCmd_List.c.src.html, xref/ModuleCmd_Load.c.html,
  xref/ModuleCmd_Load.c.src.html, xref/ModuleCmd_Purge.c.html,
  xref/ModuleCmd_Purge.c.src.html, xref/ModuleCmd_Switch.c.html,
  xref/ModuleCmd_Switch.c.src.html, xref/ModuleCmd_Update.c.html,
  xref/ModuleCmd_Update.c.src.html, xref/ModuleCmd_Use.c.html,
  xref/ModuleCmd_Use.c.src.html, xref/ModuleCmd_Whatis.c.html,
  xref/ModuleCmd_Whatis.c.src.html, xref/cmdAlias.c.html,
  xref/cmdAlias.c.src.html, xref/cmdConflict.c.html,
  xref/cmdConflict.c.src.html, xref/cmdInfo.c.html, xref/cmdInfo.c.src.html,
  xref/cmdIsLoaded.c.html, xref/cmdIsLoaded.c.src.html, xref/cmdLog.c.html,
  xref/cmdLog.c.src.html, xref/cmdMisc.c.html, xref/cmdMisc.c.src.html,
  xref/cmdModule.c.html, xref/cmdModule.c.src.html, xref/cmdPath.c.html,
  xref/cmdPath.c.src.html, xref/cmdSetenv.c.html, xref/cmdSetenv.c.src.html,
  xref/cmdTrace.c.html, xref/cmdTrace.c.src.html, xref/cmdUlvl.c.html,
  xref/cmdUlvl.c.src.html, xref/cmdUname.c.html, xref/cmdUname.c.src.html,
  xref/cmdVerbose.c.html, xref/cmdVerbose.c.src.html, xref/cmdVersion.c.html,
  xref/cmdVersion.c.src.html, xref/cmdWhatis.c.html,
  xref/cmdWhatis.c.src.html, xref/cmdXResource.c.html,
  xref/cmdXResource.c.src.html, xref/config.h.html, xref/config.h.src.html,
  xref/cxref.apdx.html, xref/cxref.function, xref/cxref.html,
  xref/cxref.include, xref/cxref.typedef, xref/cxref.variable,
  xref/error.c.html, xref/error.c.src.html, xref/getopt.c.html,
  xref/getopt.c.src.html, xref/getopt.h.html, xref/getopt.h.src.html,
  xref/index.html, xref/init.c.html, xref/init.c.src.html,
  xref/locate_module.c.html, xref/locate_module.c.src.html, xref/main.c.html,
  xref/main.c.src.html, xref/modules_def.h.html, xref/modules_def.h.src.html,
  xref/utility.c.html, xref/utility.c.src.html, xref/version.c.html,
  xref/version.c.src.html: Updated the cxref docs

2005-11-14  rkowen <rkowen>

  * ChangeLog, Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Bootstrap.c,
  ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Update.c, ModuleCmd_Use.c,
  README, acinclude.m4, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdModule.c,
  cmdPath.c, cmdTrace.c, cmdUlvl.c, cmdVersion.c, config/tcl.m4, configure.ac,
  doc/module.1.in, error.c, init.c, lib/.cvsignore, lib/Makefile.am,
  lib/avec.h, lib/avec.man, lib/avec/.cvsignore, lib/avec/avec_.c,
  lib/avec/avec_.h, lib/avec/avec_accessor.c, lib/avec/avec_alloc.c,
  lib/avec/avec_close.c, lib/avec/avec_ctor.c, lib/avec/avec_dealloc.c,
  lib/avec/avec_decrease.c, lib/avec/avec_delete.c, lib/avec/avec_dtor.c,
  lib/avec/avec_increase.c, lib/avec/avec_init.c, lib/avec/avec_insert.c,
  lib/avec/avec_keys.c, lib/avec/avec_lookup.c, lib/avec/avec_remove.c,
  lib/avec/avec_resize.c, lib/avec/avec_resize_percentage.c,
  lib/avec/avec_set_fns.c, lib/avec/avec_values.c, lib/avec/avec_walk.c,
  lib/avec/avec_walk_r.c, lib/configure.ac, lib/iprime.h, lib/iprime.man,
  lib/iprime/.cvsignore, lib/iprime/chprime.c, lib/iprime/hprime.c,
  lib/iprime/iprime.c, lib/iprime/iprime_.h, lib/iprime/iprime_lut.c,
  lib/iprime/lprime.c, lib/iprime/scprime.c, lib/iprime/ucprime.c,
  lib/iprime/uhprime.c, lib/iprime/uiprime.c, lib/iprime/ulprime.c,
  lib/isqrt.h, lib/isqrt.man, lib/isqrt/.cvsignore, lib/isqrt/chsqrt.c,
  lib/isqrt/hsqrt.c, lib/isqrt/isqrt.c, lib/isqrt/isqrt_.h,
  lib/isqrt/isqrt_lut.c, lib/isqrt/lsqrt.c, lib/isqrt/scsqrt.c,
  lib/isqrt/ucsrt.c, lib/isqrt/uhsqrt.c, lib/isqrt/uisqrt.c,
  lib/isqrt/ulsqrt.c, lib/list.h, lib/list.man, lib/list/.cvsignore,
  lib/list/list_.c, lib/list/list_.h, lib/list/list_append.c,
  lib/list/list_ctor.c, lib/list/list_delete.c, lib/list/list_dtor.c,
  lib/list/list_exists.c, lib/list/list_first.c, lib/list/list_insert.c,
  lib/list/list_last.c, lib/list/list_number.c, lib/list/list_pop.c,
  lib/list/list_push.c, lib/list/list_qsort.c, lib/list/list_shift.c,
  lib/list/list_sizeof.c, lib/list/list_swap.c, lib/list/list_unshift.c,
  lib/memdebug.c, lib/memdebug.h, lib/memdebug.man, lib/strmalloc.c,
  lib/strmalloc.h, lib/strmalloc.man, lib/tests/.cvsignore,
  lib/tests/Makefile.am, lib/tests/tavec.c, lib/tests/tiprime.c,
  lib/tests/tisqrt.c, lib/tests/tstrmalloc.c, lib/tests/tuvec.c, lib/uvec.h,
  lib/uvec.man, lib/uvec/.cvsignore, lib/uvec/str2uvec.c, lib/uvec/uvec2str.c,
  lib/uvec/uvec2uvec.c, lib/uvec/uvec_accessor.c, lib/uvec/uvec_add.c,
  lib/uvec/uvec_alloc.c, lib/uvec/uvec_close.c, lib/uvec/uvec_copy.c,
  lib/uvec/uvec_copy_str.c, lib/uvec/uvec_copy_vec.c,
  lib/uvec/uvec_count_tok.c, lib/uvec/uvec_ctor.c, lib/uvec/uvec_dealloc.c,
  lib/uvec/uvec_dtor.c, lib/uvec/uvec_init.c, lib/uvec/uvec_insert.c,
  lib/uvec/uvec_push.c, lib/uvec/uvec_randomize.c, lib/uvec/uvec_reverse.c,
  lib/uvec/uvec_shift.c, lib/uvec/uvec_sort.c, lib/uvec/uvec_strfns.c,
  lib/uvec/uvec_strfree.c, lib/uvec/vec2uvec.c, locate_module.c, main.c,
  modulefiles/module-cvs.in, modules_def.h, testsuite/.cvsignore,
  testsuite/config/unix.exp, testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.00-init/015-version.exp,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/050-modpath.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.30-userlvl/040-advanced.exp,
  testsuite/modules.30-userlvl/045-adv.exp,
  testsuite/modules.30-userlvl/050-expert.exp,
  testsuite/modules.30-userlvl/055-exp.exp,
  testsuite/modules.35-trace/010-init_ts.exp,
  testsuite/modules.35-trace/020-default.exp,
  testsuite/modules.35-trace/030-all-on.exp,
  testsuite/modules.35-trace/031-all-off.exp,
  testsuite/modules.35-trace/040-load-all.exp,
  testsuite/modules.35-trace/041-load-all.exp,
  testsuite/modules.35-trace/042-load-on.exp,
  testsuite/modules.35-trace/043-load-onoff.exp,
  testsuite/modules.35-trace/044-load-ovr.exp,
  testsuite/modules.35-trace/050-disp-onoff.exp,
  testsuite/modules.35-trace/060-dilo-onoff.exp,
  testsuite/modules.35-trace/070-colon.exp,
  testsuite/modules.35-trace/095-cleanup.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/070-alias-proc.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/081-info-user.exp,
  testsuite/modules.50-cmds/082-info-user-exp.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/101-badfac.exp,
  testsuite/modules.50-cmds/110-verbose.exp,
  testsuite/modules.50-cmds/115-verbose-msg.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/095-cleanup.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp,
  testsuite/modules.95-version/999-cleanup.exp, utility.c, version.c: Merged
  in the modules_3_2_predeep_branch branch to the main trunk. Removed the hash
  library.

2005-07-21  sirdude <sirdude>

  * tcl/modulecmd.tcl: Made it so g_debug is passed to the module files.

2005-05-09  sirdude <sirdude>

  * tcl/modulecmd.tcl: Removed error message that shouldn't be print there. It
  was printing an error complaining it couldn't find a module even though it
  could.

2005-05-05  sirdude <sirdude>

  * tcl/modulecmd.tcl: Added a space between columns in module list command.
  Kent

2005-04-27  sirdude <sirdude>

  * tcl/modulecmd.tcl: Fix so module swap perl perl works the same as module
  swap perl  (before was different if you had a different version than the
  default loaded)  Kent

  * tcl/modulecmd.tcl: Ran modulecmd.tcl through frink since no one complained
  about doing it.  Kent

  * tcl/modulecmd.tcl: added lazy find for module switch  Example: Say you
  have the following modules   perl/5.6 perl/5.8(default) and you have
  perl/5.6 loaded currently. Now you can do module switch perl perl and it
  will unload perl/5.6 and load perl/5.8 before it would error saying the perl
  module is not loaded.  Kent

2005-04-19  sirdude <sirdude>

  * tcl/modulecmd.tcl: I added -l and -t options for module list and module
  avail also fixed resolveModuleVersionOrAlias up a bit so it deals with
  module(default)  Kent

2005-04-15  sirdude <sirdude>

  * tcl/modulecmd.tcl: fix (default) display on modules that are "deep"
  soft/xemacs/21.4   etc....  Kent

  * tcl/modulecmd.tcl: made reload unload all modules then load them all in
  the proper order. Similar to module swap.  Kent

2005-04-14  sirdude <sirdude>

  * tcl/modulecmd.tcl: Modified module switch so it unloaded last module first
  down to the module its swapping out and then reloaded everything in order.
  Before it was unloading them starting at the module to be swapped out to the
  end and then loading them in the same order.  Probably not a big deal but
  code is actually shorter now and is probably more correct.  I also added -a
  and -append as alternatives to --append and --prepend for module use.
  (There were comments saying it would be nice to have that)  Kent

  * tcl/modulecmd.tcl: fixes module whatis problem with (default) before it
  wasn't able to find modules that had a .version file.  Kent

  * tcl/modulecmd.tcl: Added two more globals DEF_COLUMNS and
  MODULES_CURRENT_VERSION and removed hardcoded bits relating to them.  Also
  removed some misc code that was commented out and no longer used.  Kent

2005-04-08  sirdude <sirdude>

  * tcl/modulecmd.tcl: Fix module swap so that it unloads old module and
  everything after it then loads new and everything that was after old.  Kent

  * tcl/modulecmd.tcl: Fix up module init(cmds) I made them behave like the c
  versions example before the initadd added a module to every module load line
  now it just does the first.  I have a ~/.modules directory and before this
  caused the init(cmds) to fail.  Also made it so it only changes one file not
  all . files it goes through.  Kent

2005-04-07  sirdude <sirdude>

  * tcl/modulecmd.tcl: Moved some global variables up to the top of the file.
  Kent

2005-04-06  sirdude <sirdude>

  * tcl/modulecmd.tcl: Modified patch for prereq's I also fixed a small
  problem in the module show  for prereq's  Kent

  * tcl/modulecmd.tcl: Rodney Mach's unalias fix  Kent

2004-11-18  lakata <lakata>

  * tcl/README-EMACS.txt, tcl/init/.cvsignore, tcl/init/lisp.in: submitted by
  tbennett@nvidia.com

  * tcl/init/Makefile, tcl/modulecmd.tcl: patch for Emacs from
  tbennett@nvidia.com

2004-11-05  lakata <lakata>

  * tcl/modulecmd.tcl: added more error checking to init/modulerc. probably
  should change this yet again to standardize the naming convention

  * tcl/modulecmd.tcl: changed hardcoded path to /home/Mark etc to
  $MODULESHOME

2004-10-22  lakata <lakata>

  * tcl/init/README.txt: added instructions on using the new autoinit feature

  * tcl/modulecmd.tcl: added autoinit feature. not documented until we get
  some feedback

2004-10-22  harlan <harlan>

  * locate_module.c: cleanup/refactor

  * configure.ac: cleanup

  * ModuleCmd_Avail.c: USE_COLCOMP -> DEF_COLLATE_BY_NUMBER

  * Makefile.am: Alphabetize...

2004-10-15  lakata <lakata>

  * tcl/modulecmd.tcl: * made compatibility changes with tcl < 8.1.  string
  equal changed to string match and changes to regular expressions.  There is
  now a caveat: module init* commands won't work if there are tabs in your
  startup file around the module commands if tcl < 8.1. * Fixed display so
  that setenv values don't give an error if used later in the module during
  display  * Fixed bug with Perl.  rendersetting output now ends with "1;" for
  perl so that the require command works correctly  * Changed noexistent path
  error to warning in cmdModuleUse. Otherwise, if you gave more than one path,
  some of the other legal paths may not get added.  This is a revert back to
  how modulecmd was originally and probably breaks compatability with the C
  version in this regard

2004-10-13  lakata <lakata>

  * tcl/modulecmd.tcl: * Fixed ModulesHelp so that it doesn't error out when
  not present * Added module-verision,module-alias, module-trace, module-user,
  module-verbosity, and module-log  to module file execution. All but
  module-version and module-alias give a warning that it is not implemented *
  Added module-trace, module-user, module-verbosity, and module-log to
  modulerc execution.  All give warnings that the funcionatlity is not
  implemented * Added #%Module checking on .version and .modulerc files *
  execute-version will now add version defaults to the global defaults array
  like .modulerc files do * .version files are no longer executed if a
  .modulerc is executed in the same directory * module-info symbols command
  implemented (could use more testing) * module-info version command
  implemented (could use more testing) * moduule-info alias command
  implemented * module-version - fixed problem of adding duplicate version
  aliases to global hash * module-alias updated to keep track of aliases by
  module name in global hash * Fix unload-path so that setenv-path followed by
  prepend-path works during unload * fixed bug in is-loaded.  It took a list
  of modules as an argument but would return true if only one of the arguments
  was loaded.  Now all arguments have to be loaded to return true. * Added
  getVersAliasList function.  Returns list of default and version aliases
  given a modulename/version * Added default and version alias information to
  avail and list output * Added a few more "----" to the module list output

  * tcl/modulecmd.tcl: modulecmd.tcl

2004-10-07  lakata <lakata>

  * tcl/modulecmd.tcl: (1) Andrew Barbers changes to fix some bugs. (2) Mark
  Lakatas change to sym links under cygwin. removed check for MODULEPATH,
  since you can use "module use ..." to set it

2004-10-05  lakata <lakata>

  * tcl/modulecmd.tcl: from Andrew Barber: Here is another update.  This one
  has some tricky changes.  Most of it was done to try and get the testsuite
  to pass.  I added a few more features too. The biggest changes were in:
  getPathToModule - now it can resolve aliases found in .modulerc and .version
  files , runModulerc - now this is responsible for finding and executing the
  global .modulerc files (new feature for tcl version)

  * tcl/modulecmd.tcl: patch from Tony Bennett.  need for gentoo system

2004-10-01  lakata <lakata>

  * tcl/modulecmd.tcl: Andrew Barbers changes: * added module-verision and
  module-alias commands, * added automatic of execution .modulerc files found
  in module directories, * added switch processing and -debug switch for debug
  messages

2004-09-30  lakata <lakata>

  * tcl/modulecmd.tcl: (1) added more commands to the internal "module"
  command (2) added all of the init* commands, like initadd (3) changed the
  help message slightly

2004-09-23  sirdude <sirdude>

  * tcl/modulecmd.tcl: David Mores patch so that first module in module list
  is shown again.  Sorry about that I should have caught that before...  Kent

  * tcl/modulecmd.tcl: Mark Moe's patch to prevent infinate loop when you have
  module a loading module b where module b has a .version that points to
  unavailable version of module b  Kent

2004-09-21  sirdude <sirdude>

  * tcl/modulecmd.tcl: David Mores,  patches to the COLUMNS stuff.  Kent

  * tcl/modulecmd.tcl: Mark Moe's patch for skipping 0 length modules in
  module list and adding the printing of: "Currently Loaded Modulesfiles:"
  Kent

2004-09-16  sirdude <sirdude>

  * tcl/modulecmd.tcl: Harlan Stenn's Patch from Phong Nguyen,  It basically
  wraps the openning of a tmpfile in a catch command  I also updated the error
  message after it to use the tmpfile var instead of hardcoding it...   Kent

2004-05-25  sirdude <sirdude>

  * tcl/init/bash.in, tcl/init/csh.in, tcl/init/ksh.in, tcl/init/perl.in,
  tcl/init/python.in, tcl/init/sh.in, tcl/init/tcsh.in, tcl/init/zsh.in: tcl
  version of modules now looks at environment var TCLSH if it exits and uses
  that first.  Suggested by David Astrom.  Kent

  * tcl/modulecmd.tcl: Use  env(COLUMNS) if its defined instead of a hard
  coded number. submitted by David Astrom through Mark Lakata.  Kent

2004-04-21  sirdude <sirdude>

  * tcl/modulecmd.tcl: David Mores patch to prevent tcl version from hanging
  with a .version file that does not set the ModulesVersion correctly.  Kent

2004-01-16  sirdude <sirdude>

  * tcl/Makefile: removed clean and test from the default make.  Kent

  * tcl/Makefile, testsuite/config/unix.exp: Made it so that the testsuite
  works with the tcl version of modules. Current stats for the tcl version
  are: # of expected passes            146 # of unexpected failures        376
  Not too shabby, I'm guessing it will be fairly straight forward to increase
  this by quite a bit.  Kent

2004-01-15  sirdude <sirdude>

  * tcl/init/bash.in, tcl/init/csh.in, tcl/init/ksh.in, tcl/init/perl.in,
  tcl/init/python.in, tcl/init/sh.in, tcl/init/tcsh.in, tcl/init/zsh.in:
  Modified the tcl init files so that they try to find tclsh, this should make
  them quite a bit faster assuming they find it. (This way it locates the
  shell just once instead of for every single command.)  Kent

  * tcl/modulecmd.tcl: Improved module help functionatlity for the tcl version
  of modules. now you can type module help (module)  also commiting the patch
  someone submitted to the board that allows for .version files in directorys
  other than the top level. (for tcl version only)  Kent Mein

2003-10-30  harlan <harlan>

  * tcl/modulecmd.tcl: bash requires a space after the { on function
  definitions.

  * tcl/modulecmd.tcl: Remove the /tmp file early.  Use the "function" keyword
  when creating sh functions; otherwise if the function already exists the
  name gets expanded on some shells.

2003-10-28  lakata <lakata>

  * tcl/modulecmd.tcl: prevent "break" from generating an error message

2003-10-27  lakata <lakata>

  * tcl/modulecmd.tcl: 1) module-info shell and shelltype would generate an
  TCL error when used (FIXED) 2) remove-path had two typos in it (FIXED) 3)
  Added detection of full path in getPathToModule procedure

2003-10-20  lakata <lakata>

  * tcl/modulecmd.tcl: 1) Add support for the other shells that the C version
  includes 2) Add support for prereq command 3) Replace the "/bin/uname" calls
  to use the tcl_platform variable and "info hostname" command  Enclosed are
  my latest modulecmd.tcl updates. I have added most of the features that I
  thought it needed and implemented the slave interpreter to execute
  modulefile in. I have tested it to some degree but not very seriously.
  Richard.M.Born@seagate.com

2003-10-15  lakata <lakata>

  * tcl/modulecmd.tcl: fixed two bugs in the display command

2003-10-07  lakata <lakata>

  * tcl/modulecmd.tcl: cleaned up the mode and modulename settings that used
  to be access via the upvar. also changed the calling convention for
  getPathToModule, which now does not throw an exception for minor warnings

  * tcl/modulecmd.tcl: fixed a bug where the result of the catch is either an
  error or the last command

2003-10-06  lakata <lakata>

  * tcl/modulecmd.tcl: fixed a bug in the popMode command and made it backward
  compatible with tcl 8.0

  * tcl/modulecmd.tcl: 1. pulled all references to puts stderr to
  report/reportWarnings/reportInternalBug. 2. changed the way the g_mode
  variable is handled. Instead of relying on the call stack, it now uses an
  explicit stack, which should solve any problems with using other namespaces
  3. removed a bunch of debugging statements. 4. fixed the way errors are
  handled, giving more meaningful responses. 5. if an error is caught in load,
  the env/alias settings are NOT updated and restored to a previous state. for
  instance, in a conflict this is important.

  * tcl/modulecmd.tcl: fixed bug in listModules that was failing on cygwin

2003-10-03  lakata <lakata>

  * tcl/modulecmd.tcl: Proxy check in for Richard.M.Born@seagate.com. He
  wrote:  1) It didn't handle modulefiles in the main directory for commands
  like module avail 2) It didn't define the ModulesCurrentModulefile variable
  3) It didn't ignore certain temp files (*~, #*#) 4) It didn't look for the
  Modulefile MagicCookie to filter out non-modulefiles  I have updated
  modulecmd.tcl to address these issues. I have removed lsHack and replaced it
  with listModules procedure. I am not familiar with the glob issue that you
  noted for Cygwin so you may want to run a few test cases to see if the new
  function still works for you. I also updated the module paths command to
  what I think you were intending.

2003-08-08  harlan <harlan>

  * tcl/modulecmd.tcl: Changes to lsHack for cmdModulePath and friends.

2003-08-07  harlan <harlan>

  * tcl/modulecmd.tcl: Typo

  * tcl/modulecmd.tcl: Add $Revision$ to the version

  * tcl/modulecmd.tcl: Initial support for "module path".

2003-08-02  harlan <harlan>

  * tcl/modulecmd.tcl: /bin/sh has no shell functions.  Avoid an extra call to
  getPathToModule

2003-08-01  harlan <harlan>

  * tcl/modulecmd.tcl: whitespace cleanup, lose cruft.

2003-07-30  lakata <lakata>

  * tcl/README.txt, tcl/modulecmd.tcl: version 0.98: fixed a bug in the
  error_count (missing closing brace). also implemented check to abort the
  tempfile sourcing if the tempfile is empty. this is to be more blackboxish,
  avoiding relying on the shell to do a clean up. one of our users is not
  using the module command correctly, and it is created a whole bunch of empty
  /tmp/modulescript files in the /tmp dir.

2003-07-15  harlan <harlan>

  * tcl/modulecmd.tcl: Begin to handle errors.

2003-07-10  harlan <harlan>

  * ChangeLog, tcl/modulecmd.tcl: * tcl/modulecmd.tcl: If g_force is set,
  ignore *_modshare.  When we produce a shell function, preface the definition
  with "function" in case it's already defined.  Default g_force to 1 now.

2003-06-26  harlan <harlan>

  * tcl/modulecmd.tcl: ModuleTcl: 0.97 Aliases: add/load, rm/inload,
  nodename/node We need to eval more "cmdModule{Unl,L}oad $arg" lines to:
  Implement --append (and --prepend) for cmdModuleUse Use -dictionary lsorts
  to provide an easy substitute for colcomp(). Added SCCS and RCS to the
  ignoreDir list. Moved ignoreDir processing to lsHack to fix a problem. Make
  sure an empty modulefile direcoty doesn't cause an error.

2003-06-02  harlan <harlan>

  * tcl/init/README.txt: Reformat some long lines.

2003-05-30  lakata <lakata>

  * tcl/init/README.txt, tcl/init/bash.in, tcl/init/csh.in, tcl/init/ksh.in,
  tcl/init/modulerc, tcl/init/perl.in, tcl/init/sh.in, tcl/init/tcsh.in,
  tcl/init/zsh.in: changed the way MODULEPATH is set up. since this is another
  environment variable like all the others, it is now set using the module
  command itself. pretty sneaky, huh?

  * tcl/modulecmd.tcl: 1. added the "source" command (experimental) 2. added
  sanity checking to verify that something external did not muck with path and
  path_modshare variables. 3. fixed a bug if you use tcsh and your paths get
  longer than 1024 characters. Previously, it was truncating the path, but
  this can get you into trouble if important things like /usr/bin or
  /usr/local/bin are truncated. The real solution is to STOP USING TCSH... use
  zsh instead.

2003-03-28  lakata <lakata>

  * tcl/README.txt, tcl/modulecmd.tcl: changes for cygwin. files should not
  have cr/lf (DOS) endings.

  * tcl/init/Makefile, tcl/init/README.txt, tcl/init/bash, tcl/init/bash.in,
  tcl/init/{csh => csh.in}, tcl/init/ksh, tcl/init/ksh.in, tcl/init/{perl =>
  perl.in}, tcl/init/{python => python.in}, tcl/init/sh, tcl/init/sh.in,
  tcl/init/{tcsh => tcsh.in}, tcl/init/zsh, tcl/init/zsh.in: made init files
  more general

2003-01-22  lakata <lakata>

  * tcl/init/perl: error checking if something goes wrong in perl

  * tcl/modulecmd.tcl: fixed bugs with corrupted env vars, improved the
  reliability of _modshare variables

2002-11-29  lakata <lakata>

  * tcl/modulecmd.tcl: changed help message

  * tcl/README.txt, tcl/init/bash, tcl/init/csh, tcl/init/ksh, tcl/init/perl,
  tcl/init/python, tcl/init/sh, tcl/init/tcsh, tcl/init/zsh,
  tcl/init/zsh.debug, tcl/modulecmd.tcl: first check in

2002-09-18  harlan <harlan>

  * ChangeLog, Makefile.am, lib/.cvsignore, lib/Makefile.am,
  lib/tests/Makefile.am: * Makefile.am (modulecmd_CFLAGS): Use X_CFLAGS and
  TCL_INCLUDES.  * lib/tests/Makefile.am (EXTRA_PROGRAMS): Renamed from
  noinst_PROGRAMS.  Lose the .x suffixes.  * lib/Makefile.am
  (ACLOCAL_AMFLAGS): Look in ../config/ .

2002-09-16  rkowen <rkowen>

  * ChangeLog, Makefile.am, ModuleCmd_List.c, TODO, colcomp.c, configure.ac,
  lib/uvec.man, locate_module.c, main.c, modules_def.h, utility.c: 2002-09-16
  R.K. Owen   <rk@owen.sj.ca.us> * colcomp.c: removed * utility.c: added
  colcomp.c contents * Makefile.am: removed colcomp.c * main.c: Added
  DEF_COLLATE_BY_NUMBER output for --version * configure.ac: changed
  USE_COLCOMP to DEF_COLLATE_BY_NUMBER, and added memdebug * locate_module.c:
  changed USE_COLCOMP and GetModuleName for deep dirs. * modules_def.h: check
  for HAVE_CONFIG_H, and added memdebug * ModuleCmd_List.c: Simplified using
  uvec objects

2002-09-13  rkowen <rkowen>

  * ChangeLog, config/.cvsignore, init/.cvsignore: 2002-09-12  R.K. Owen
  <rk@owen.sj.ca.us> * config/.cvsignore: New File: Ignore autogenerated
  files. * init/.cvsignore: Ignore autogenerated files.

  * .cvsignore, ChangeLog, doc/.cvsignore, etc/.cvsignore, ext/.cvsignore,
  lib/.cvsignore, lib/tests/.cvsignore, lib/tests/Makefile.am,
  modulefiles/.cvsignore: 2002-09-12  R.K. Owen   <rk@owen.sj.ca.us> *
  .cvsignore: Ignore autogenerated files. * doc/.cvsignore: Ignore
  autogenerated files. * etc/.cvsignore: Ignore autogenerated files. *
  ext/.cvsignore: Ignore autogenerated files. * lib/.cvsignore: Ignore
  autogenerated files. * lib/tests/.cvsignore: Ignore autogenerated files. *
  modulefiles/.cvsignore: Ignore autogenerated files. * lib/tests/Makefile.am:
  Tweeked for autoreconf

  * ChangeLog, README, lib/Makefile.am, lib/aclocal.m4, lib/configure.ac,
  lib/tests/tuvec.c, lib/uvec.h, lib/uvec/uvec_copy_str.c,
  lib/uvec/uvec_strfree.c: 2002-09-12  R.K. Owen   <rk@owen.sj.ca.us> *
  README: Updated the anonymous CVS invocation. * lib/aclocal.m4: Deleted
  auto* generated file. * lib/configure.ac: Tweeked to autoreconf *
  lib/Makefile.am: Tweeked to autoreconf * lib/uvec.h: Added uvec_strfree *
  lib/uvec/uvec_copy_str.c: Uses uvec string fns * lib/uvec/uvec_copy_vec.c:
  Uses uvec string fns * lib/uvec/uvec_strfree.c: New file: to dealloc
  uvec2str() generated strings * lib/tests/tuvec.c: Updated for uvec changes

2002-09-12  harlan <harlan>

  * doc/Makefile.am, lib/config.h.in, lib/configure: * doc/Makefile.am: Added
  file.  * lib/configure: Remove auto*-generated file. * lib/config.h.in:
  Ditto.

  * ChangeLog, Makefile.in, README, aclocal.m4, config.h.in, config/compile,
  config/depcomp, config/install-sh, config/missing, config/mkinstalldirs,
  configure, doc/Makefile.in, etc/Makefile.in, ext/Makefile.in,
  init/Makefile.in, lib/Makefile.in, lib/tests/Makefile.in,
  modulefiles/Makefile.in: * README: Update the instructions for using the CVS
  version of modules.  * modulefiles/Makefile.in: Deleted auto* generated
  file. * lib/tests/Makefile.in: Ditto. * lib/Makefile.in: Ditto. *
  init/Makefile.in: Ditto. * ext/Makefile.in: Ditto. * etc/Makefile.in: Ditto.
  * doc/Makefile.in: Ditto. * config/mkinstalldirs: Ditto. * config/missing:
  Ditto. * config/install-sh: Ditto. * config/depcomp: Ditto. *
  config/compile: Ditto. * configure: Ditto. * config.h.in: Ditto. *
  aclocal.m4: Ditto. * Makefile.in: Ditto.

  * ChangeLog: Renamed ChangeLog to NEWS, started a new ChangeLog.

  * Makefile.am, ModuleCmd_Avail.c, NEWS, colcomp.c, configure.ac,
  lib/Makefile, locate_module.c: * colcomp.c: New file.  Alternative collating
  algorithm that sorts numeric substrings numerically (mostly).  *
  lib/Makefile: Remove auto*-generated file.  * locate_module.c
  (SortedDirList): Ignore SCCS/ subdirs, too.  * configure.ac: Disable our
  "look" for RUNTEST; it drives auto* crazy.  Added the
  --with-file-collate={string,number} test, which provides a way to enable
  USE_COLCOMP.  * ModuleCmd_Avail.c (fi_ent_cmp): USE_COLCOMP when told to do
  so. * locate_module.c (filename_compare): Ditto.  * Makefile.am
  (modulecmd_LDFLAGS): lib is in the builddir, not the srcdir.
  (modulecmd_SOURCES): Added colcomp.c .

  * ChangeLog => NEWS: Rename ChangeLog to NEWS.

2002-08-27  rkowen <rkowen>

  * lib/Makefile, lib/Makefile.am, lib/Makefile.in, lib/memdebug.c,
  lib/memdebug.h, lib/memdebug.man, lib/tests/Makefile.in: Added the memdebug
  headerfile and sources.

2002-08-22  rkowen <rkowen>

  * cmdVersion.c, locate_module.c, modules_def.h: Fixed up GetDefault to
  handle .modulerc and .version files, where the latter will read the env.var.
  defined in .version and do a module-version so that the modlist data can be
  updated. These mods handle deep dirs on "module load" ... now need to fix up
  the rest! There's also now an amazing amount of cruft to weed out.

2002-08-14  lakata <lakata>

  * README: updated docs to reflect new configure (TCL paths)

  * locate_module.c, modules_def.h: removed compiler warnings about const
  char*

  * configure, configure.ac: added hack for linux that cant do -lX11 with
  -L/usr/X11R6/lib

  * cmdInfo.c, cmdVersion.c: removed compiler warnings

  * Makefile.in: fixed LDFLAGS build problem when not building in orig dist.
  directory

2002-08-02  rkowen <rkowen>

  * Makefile.am, Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Display.c,
  ModuleCmd_Init.c, ModuleCmd_Load.c, ModuleCmd_Switch.c, aclocal.m4,
  cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdPath.c, cmdVersion.c, configure,
  configure.ac, error.c, etc/Makefile.in, ext/Makefile.in, init/Makefile.in,
  locate_module.c, main.c, modulefiles/Makefile.in, modules_def.h,
  testsuite/modules.00-init/080-begenv.exp, utility.c: A whole slew of changes
  progressing to deap modulefile directories. The current is not usuable, but
  will eventually be. These changes are checked in for safe keeping while
  R.K.Owen is on vacation.

  * xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Clear.c.html,
  xref/ModuleCmd_Display.c.html, xref/ModuleCmd_Help.c.html,
  xref/ModuleCmd_Init.c.html, xref/ModuleCmd_List.c.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Purge.c.html,
  xref/ModuleCmd_Switch.c.html, xref/ModuleCmd_Update.c.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Whatis.c.html,
  xref/cmdAlias.c.html, xref/cmdConflict.c.html, xref/cmdInfo.c.html,
  xref/cmdIsLoaded.c.html, xref/cmdLog.c.html, xref/cmdMisc.c.html,
  xref/cmdModule.c.html, xref/cmdPath.c.html, xref/cmdSetenv.c.html,
  xref/cmdTrace.c.html, xref/cmdUlvl.c.html, xref/cmdUname.c.html,
  xref/cmdVerbose.c.html, xref/cmdVersion.c.html, xref/cmdWhatis.c.html,
  xref/cxref.apdx.html, xref/cxref.function, xref/cxref.html,
  xref/cxref.include, xref/cxref.typedef, xref/cxref.variable,
  xref/error.c.html, xref/getopt.c.html, xref/init.c.html,
  xref/locate_module.c.html, xref/main.c.html, xref/utility.c.html,
  xref/version.c.html: Updated the xref html, but not current.

  * lib/Makefile, lib/Makefile.in, lib/uvec.h, lib/uvec.man,
  lib/uvec/uvec_copy_str.c, lib/uvec/uvec_copy_vec.c, lib/uvec/uvec_strfns.c:
  Changed how uvec sets/gets the uvec_strfns.

2002-07-29  rkowen <rkowen>

  * lib/Makefile.am, lib/list.h, lib/list.man, lib/list/.cvsignore,
  lib/list/list_.c, lib/list/list_.h, lib/list/list_append.c,
  lib/list/list_ctor.c, lib/list/list_delete.c, lib/list/list_dtor.c,
  lib/list/list_exists.c, lib/list/list_first.c, lib/list/list_insert.c,
  lib/list/list_last.c, lib/list/list_number.c, lib/list/list_pop.c,
  lib/list/list_push.c, lib/list/list_qsort.c, lib/list/list_shift.c,
  lib/list/list_sizeof.c, lib/list/list_swap.c, lib/list/list_unshift.c: Added
  the list object for doubly linked lists.

2002-07-18  rkowen <rkowen>

  * lib/config.h.in: Need this also.

  * lib/Makefile.in: Forgot this one.

  * lib/Makefile, lib/Makefile.am, lib/aclocal.m4, lib/configure,
  lib/configure.ac, lib/tests/.cvsignore, lib/tests/Makefile.am,
  lib/tests/Makefile.in: Adding in the automake/autoconf files for the modules
  library.

  * lib/strmalloc.c, lib/strmalloc.h, lib/strmalloc.man,
  lib/tests/tstrmalloc.c: Added the strmalloc code to the modules library,
  this will be useful for creating new strings with aliases expanded.

  * lib/.cvsignore, lib/tests/tuvec.c, lib/uvec.h, lib/uvec.man,
  lib/uvec/.cvsignore, lib/uvec/str2uvec.c, lib/uvec/uvec2str.c,
  lib/uvec/uvec2uvec.c, lib/uvec/uvec_accessor.c, lib/uvec/uvec_add.c,
  lib/uvec/uvec_alloc.c, lib/uvec/uvec_close.c, lib/uvec/uvec_copy.c,
  lib/uvec/uvec_copy_str.c, lib/uvec/uvec_copy_vec.c,
  lib/uvec/uvec_count_tok.c, lib/uvec/uvec_ctor.c, lib/uvec/uvec_dealloc.c,
  lib/uvec/uvec_dtor.c, lib/uvec/uvec_init.c, lib/uvec/uvec_insert.c,
  lib/uvec/uvec_push.c, lib/uvec/uvec_randomize.c, lib/uvec/uvec_reverse.c,
  lib/uvec/uvec_shift.c, lib/uvec/uvec_sort.c, lib/uvec/uvec_strfns.c,
  lib/uvec/vec2uvec.c: Added the uvec code, which provides basic unix vector
  capabilities. A unix vector is a NULL terminated array of char * strings. An
  example of this is *argv[] or *environ[].

  * lib/isqrt.h, lib/isqrt.man, lib/isqrt/.cvsignore, lib/isqrt/chsqrt.c,
  lib/isqrt/hsqrt.c, lib/isqrt/isqrt.c, lib/isqrt/isqrt_.h,
  lib/isqrt/isqrt_lut.c, lib/isqrt/lsqrt.c, lib/isqrt/scsqrt.c,
  lib/isqrt/ucsrt.c, lib/isqrt/uhsqrt.c, lib/isqrt/uisqrt.c,
  lib/isqrt/ulsqrt.c, lib/tests/tisqrt.c: Adding in the isqrt code to the
  modules library, this is needed by iprime (which is needed by avec).

  * lib/iprime.h, lib/iprime.man, lib/iprime/.cvsignore, lib/iprime/chprime.c,
  lib/iprime/hprime.c, lib/iprime/iprime.c, lib/iprime/iprime_.h,
  lib/iprime/iprime_lut.c, lib/iprime/lprime.c, lib/iprime/scprime.c,
  lib/iprime/ucprime.c, lib/iprime/uhprime.c, lib/iprime/uiprime.c,
  lib/iprime/ulprime.c, lib/tests/tiprime.c: Added the iprime code to the
  modules library.  This is needed by avec to compute the optimal hash size.

  * lib/avec.h, lib/avec.man, lib/avec/.cvsignore, lib/avec/avec_.c,
  lib/avec/avec_.h, lib/avec/avec_accessor.c, lib/avec/avec_alloc.c,
  lib/avec/avec_close.c, lib/avec/avec_ctor.c, lib/avec/avec_dealloc.c,
  lib/avec/avec_decrease.c, lib/avec/avec_delete.c, lib/avec/avec_dtor.c,
  lib/avec/avec_increase.c, lib/avec/avec_init.c, lib/avec/avec_insert.c,
  lib/avec/avec_keys.c, lib/avec/avec_lookup.c, lib/avec/avec_remove.c,
  lib/avec/avec_resize.c, lib/avec/avec_resize_percentage.c,
  lib/avec/avec_set_fns.c, lib/avec/avec_values.c, lib/avec/avec_walk.c,
  lib/avec/avec_walk_r.c, lib/tests/tavec.c: Added an associative vector
  object to the modules library.

2002-06-17  rkowen <rkowen>

  * RKOConfigure, locate_module.c: Minor changes in preparation for big ones.

  * ChangeLog, ModuleCmd_Avail.c, ModuleCmd_Update.c, ModuleCmd_Use.c,
  config.h.in, configure, configure.ac, doc/module.1.in, error.c, init.c,
  main.c, modules_def.h, testsuite/config/unix.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.70-maint/020-update.exp: * Made the .modulesbeginenv
  facility optional (default is not to have it) * default for cache is now
  "no" * Added version_test() to testsuite to make some of the tests
  conditional on the values generated by --version. - the configure options
  help is formatted with AC_HELP_STRING

2002-06-14  rkowen <rkowen>

  * .cvsignore, ChangeLog, Makefile.am, Makefile.in, config.h.in,
  config/compile, configure, configure.ac, doc/Makefile.in, etc/.cvsignore,
  etc/Makefile.am, etc/Makefile.in, ext/.cvsignore, ext/Makefile.am,
  ext/Makefile.in, init/Makefile.am, init/Makefile.in, init/filter,
  init/zsh.in, modulefiles/Makefile.am, modulefiles/Makefile.in,
  testsuite/etc/.cvsignore: * Reworked every configure-based file - uses
  automake to generate most of the Makefile.in - renamed configure.in to
  configure.ac per autoconf - Versioning is optional now with a configure
  option - reworked the init scripts for versioning or not - eliminated
  acconfig.h and put templates in configure.ac - make install now honors the
  DESTDIR variable for package builds - honors bindir for modulecmd location
  (but the init scripts are only correct if no versioning) * Collected the
  usage info and now it can be displayed with the --help or -H option (same as
  help) * --version now gives most of the optional configure parameters for
  easy debugging of problems * Fixed bootstrap to just source the appropriate
  init script

  * Makefile.am, Makefile.in, acconfig.h, config.h.in, configure,
  configure.ac, etc/Makefile.am, etc/Makefile.in, etc/add.modules.in,
  etc/global/bashrc.in, etc/global/csh.cshrc.in, etc/skel/.cshrc.in,
  etc/skel/.kshenv.in, ext/Makefile.am, ext/Makefile.in, ext/add.ext.in,
  ext/common/.cshrc.in, ext/common/.kshenv.in, init/.modulespath.in,
  init/bash.in, init/csh.in, init/ksh.in, init/perl.in, init/python.in,
  init/sh.in, init/zsh.in: Removed the acconfig.h file since it's essentially
  in the configure.ac now. Reworked all the init,skel,add.* files to handle
  versioning or no. Added Makefile.am to ./etc/ and ./ext/ for cleaner
  installs.

2002-06-13  rkowen <rkowen>

  * Makefile.am, Makefile.in, ModuleCmd_Help.c, acconfig.h, config.h.in,
  doc/module.1.in, main.c, modules_def.h,
  testsuite/modules.00-init/015-version.exp: The version info displays some of
  the configuration options. Moved the usage info into module_usage() that can
  be displayed with the --help or -H switch.

  * Makefile.am, Makefile.in, ModuleCmd_Whatis.c, acconfig.h, config.h.in,
  configure, configure.ac, main.c: Renamed INSTPATH to PREFIX and is no longer
  passed as a compiler -D argument, but is now entered directly into the
  config.h header.

2002-06-12  rkowen <rkowen>

  * Makefile.am, Makefile.in, ModuleCmd_Bootstrap.c, init.c, main.c,
  modules_def.h, utility.c: Converted the configure scripts over to
  automake,autoconf generation. Modified "module bootstrap" to source the init
  files. Put the shell properties and moved set_derelict and renamed it
  set_shell_properties into init.c . Created a matrix of shell properties {
  name, derelict, init, cmd separator }.

  * testsuite/etc/apropos.cache, testsuite/modules.50-cmds/095-uname.exp:
  Fixed test syntax - it didn't like "dangling" ('s and )'s in regexp string.
  Just escaped them. Removed apropos.cache - it gets regenerated with each
  test.

  * ModuleCmd_Switch.c, testsuite/modules.50-cmds/170-swap.exp: Fixed up
  "module switch" one argument form (use stringer alloc) and added more tests
  (one for each of the major shells).

2002-06-11  rkowen <rkowen>

  * acconfig.h, config.h.in, configure, configure.ac: Added MODULES_INIT_DIR
  to the configure files.

2002-06-10  rkowen <rkowen>

  * Makefile.am, Makefile.in, ModuleCmd_Bootstrap.c, acconfig.h, acinclude.m4,
  aclocal.m4, config.h.in, configure, configure.ac: Upgraded the
  auto-configuration to use automake/1.6 and autoconf/2.53 to auto-generate
  some of the files.

  * init/bash.in, init/csh.in, init/ksh.in, init/perl.in, init/sh.in,
  init/zsh.in: Re-introduced the init files with versioning.

  * config/depcomp, config/install-sh, config/install.sh, config/missing,
  config/mkinstalldirs: Upgraded install scripts to automake/1.6 autoconf/2.53
  standards.

2002-06-06  rkowen <rkowen>

  * configure.in => configure.ac: configure.ac is actually the continuation of
  configure.in. do "cvs log configure.in" for a history.
  ---------------------------- revision 1.11 (of configure.in) date:
  2002/04/29 21:16:48;  author: rkowen;  state: Exp;  lines: +145 -116 *
  Upgraded configure.in to autoconf 2.52.  * Changed  the configure to search
  for libTcl.sh to acquire all it's necessary Tcl env.vars from it.

2002-05-06  rkowen <rkowen>

  * .cvsignore, doc/.cvsignore, etc/.cvsignore, etc/global/.cvsignore,
  etc/skel/.cvsignore, ext/.cvsignore, ext/common/.cvsignore, init/.cvsignore,
  modulefiles/.cvsignore, testsuite/.cvsignore: Added a bunch of .cvsignore
  files to avoid CVS in listing the known (but made) files.

2002-05-03  rkowen <rkowen>

  * testsuite/modulefiles/eschars/1.0,
  testsuite/modules.35-trace/010-init_ts.exp,
  testsuite/modules.35-trace/030-all-on.exp,
  testsuite/modules.35-trace/031-all-off.exp,
  testsuite/modules.35-trace/040-load-all.exp,
  testsuite/modules.35-trace/041-load-all.exp,
  testsuite/modules.35-trace/042-load-on.exp,
  testsuite/modules.35-trace/043-load-onoff.exp,
  testsuite/modules.35-trace/044-load-ovr.exp,
  testsuite/modules.35-trace/050-disp-onoff.exp,
  testsuite/modules.35-trace/060-dilo-onoff.exp,
  testsuite/modules.35-trace/070-colon.exp,
  testsuite/modules.50-cmds/022-setenv-eschars.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp, utility.c: Added
  EscapePerlString to utility.c, added '*' to list of csh special chars. Fixed
  up tests to reflect these changes. Added
  testsuite/modules.50-cmds/022-setenv-eschars.exp to test out escaping
  special chars.

2002-04-30  rkowen <rkowen>

  * install.sh, version.c: Moved install.sh to config/ and updated the version
  to 3.2.0a .

2002-04-30  lakata <lakata>

  * ModuleCmd_Bootstrap.c: fixed getexecname() problem.

2002-04-29  rkowen <rkowen>

  * RKOConfigure: Eliminated a lot of the extraneous options now that
  configure/tclConfig.sh .

  * ChangeLog, Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Init.c,
  ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Switch.c, ModuleCmd_Update.c,
  ModuleCmd_Whatis.c, aclocal.m4, cmdConflict.c, cmdLog.c, cmdModule.c,
  cmdPath.c, cmdTrace.c, cmdVersion.c, cmdXResource.c, config/install.sh,
  config/tcl.m4, configure, configure.in, error.c, init.c, locate_module.c,
  main.c, modules_def.h, utility.c: * Upgraded configure.in to autoconf 2.52.
  * Changed  the configure to search for libTcl.sh to acquire all it's
  necessary Tcl env.vars from it.  * created a utility function stringer() to
  handle most of the strcpy/strcat operations and to automatically allocate
  string memory.  * Mostly changed the memory malloc/free to use
  stringer/null_free.  * rewrote some of the code logic to have a single point
  of exit with unwinding of memory allocations.

2002-04-29  lakata <lakata>

  * ModuleCmd_Bootstrap.c: fixed bug with binary_name without an absolute path

  * ModuleCmd_Help.c: fixed help for swap|switch, to reflect optional first
  modulefile1

  * ModuleCmd_Bootstrap.c, config.h.in, configure, configure.in: added PREFIX
  to config.h and propagated to bootstrap code as MODULESHOME

  * doc/module.1.in: updated docs regarding "switch" and MODULESHOME

  * ChangeLog: "module switch foo/1.3" change log

  * ModuleCmd_Bootstrap.c, ModuleCmd_Switch.c, error.c, modules_def.h: added
  support for 1-arg form of "swap/switch" command

  * ModuleCmd_List.c: sanity check added in case _LMFILES_ and LOADEDMODULES
  env vars get corrupted externally

  * testsuite/modules.50-cmds/170-swap.exp: added test for one-argument form
  of swap/switch command

2002-04-27  lakata <lakata>

  * ChangeLog, Makefile.in, ModuleCmd_Bootstrap.c, cmdModule.c, cmdTrace.c,
  config.h.in, doc/module.1.in, init/bash.in, init/csh.in, init/ksh.in,
  init/perl.in, init/sh.in, init/zsh.in, main.c, modules_def.h, utility.c:
  added the bootstrap command

2002-04-24  lakata <lakata>

  * ChangeLog: more stuff

  * init/tcsh.in: tcsh is now generated from csh, not tcsh.in

  * init/Makefile.in: tcsh script is copy of csh script

  * init/csh.in: fixed csh init script to deal with funny shell chars like *
  and {}

  * utility.c: (1) removed unset -f for zsh unaliasing  (2) removed single
  quotes for quoting env vars. This breaks if the env var itself has single
  quotes. The more robust method is to individually escape all the dangerous
  characters.  Old method: setenv foo 'bar bar'  New method: setenv foo bar\
  bar  (3) removed tmpnam and tempname stuff, replacing with safer
  tmpfile_mod()

  * config.h.in, configure, configure.in: added TMP_DIR define

  * cmdXResource.c: suppress warning if DISPLAY is not set

  * cmdModule.c: fixed help message

  * aclocal.m4: fixed problem with finding tcl lib using glob

  * testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.30-userlvl/040-advanced.exp,
  testsuite/modules.30-userlvl/045-adv.exp,
  testsuite/modules.30-userlvl/050-expert.exp,
  testsuite/modules.30-userlvl/055-exp.exp,
  testsuite/modules.35-trace/010-init_ts.exp,
  testsuite/modules.35-trace/020-default.exp,
  testsuite/modules.35-trace/030-all-on.exp,
  testsuite/modules.35-trace/031-all-off.exp,
  testsuite/modules.35-trace/040-load-all.exp,
  testsuite/modules.35-trace/041-load-all.exp,
  testsuite/modules.35-trace/042-load-on.exp,
  testsuite/modules.35-trace/043-load-onoff.exp,
  testsuite/modules.35-trace/044-load-ovr.exp,
  testsuite/modules.35-trace/050-disp-onoff.exp,
  testsuite/modules.35-trace/060-dilo-onoff.exp,
  testsuite/modules.35-trace/070-colon.exp,
  testsuite/modules.35-trace/095-cleanup.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/081-info-user.exp,
  testsuite/modules.50-cmds/082-info-user-exp.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/101-badfac.exp,
  testsuite/modules.50-cmds/110-verbose.exp,
  testsuite/modules.50-cmds/115-verbose-msg.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.50-cmds/170-swap.exp,
  testsuite/modules.50-cmds/190-load.exp,
  testsuite/modules.50-cmds/200-break.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp: changed tests to match new
  syntax for setting env vars. rather than quoting, special characters are
  escaped

2002-04-09  lakata <lakata>

  * Makefile.in: simplified installation of deep directories

2002-03-18  rkowen <rkowen>

  * Makefile.in: Un-escaped the --srcdir $$TESTSUITEDIR, because it caused
  problems on Linux dejagnu 1.4.1 .  The variable is being interpolated before
  the runtest command is executed.

2002-03-11  lakata <lakata>

  * aclocal.m4, configure, configure.in: more TCL smarts, if tclsh does not
  exist on path

  * INSTALL: added hints on how to recognize a bad TCL install

  * ChangeLog: updates for release 3.1.6++

  * testsuite/modules.00-init/015-version.exp.in,
  testsuite/modules.50-cmds/100-loglevel.exp.in: removed *.in versions
  (configure processed)

  * testsuite/modules.00-init/015-version.exp,
  testsuite/modules.50-cmds/100-loglevel.exp: renamed from *.in versions
  (configure processed)

  * testsuite/config/unix.exp, testsuite/modulefiles/system/2.0,
  testsuite/modulefiles/use/{1.0.in => 1.0}, testsuite/modulefiles/use/{2.0.in
  => 2.0}, testsuite/modulefiles/use/{2.1.in => 2.1},
  testsuite/modulefiles/use/{2.2.in => 2.2},
  testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.00-init/015-version.exp.in,
  testsuite/modules.00-init/050-modpath.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/065-rcerrs.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/017-use-undo.exp,
  testsuite/modules.70-maint/010-init_ts.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.95-version/010-init_ts.exp: (a) updated testsuite by
  centering source on TESTSUITEDIR, rather than rely on "pwd" or relative
  paths, which prohibit running the testsuite from a different dir (b) removed
  autoconf/configure processing of testsuite

  * INSTALL: Added more information about configuring TCL and a few other
  prerequisites.

  * configure: reran autoconf. see configure.in log

  * probetcl: probetcl functionality is now in aclocal.m4

  * configure.in: (a) reordered configuration, so that critical things are
  done first (aids in debugging to get the hardstuff done first). (b) removed
  some of the testsuite configuration (c) added -with-tcl-library
  configuration (d) changed the help messages

  * config.h.in: removed redundant lines

  * cmdXResource.c: (a) fixed regular expression for XRDB parsing (b) fixed
  spelling of "resource" (i think it was using the French spelling before)

  * Makefile.in: (a) change the way testsuite is configured, so "clean" was
  updated (b) changed -I include path to point to cwd instead ..

  * aclocal.m4: fixed the way TCL was configured

2002-03-10  rkowen <rkowen>

  * init/csh.in: Fixed bug in init/csh script, which only affected those that
  changed their history character.  Found by Barb Mauzy of Cray Inc.

  * Makefile.in: Updated the dist tarball upload targets.

  * modulefiles/module-cvs.in: Fixed up module-ftp alias to reflect the
  current SourceForge.Net ftp situation.

  * version.c: Preparing the version move to 3.1.7

  * .ftp: Made the tarball ftp uploading script more generic.

  * modules.lsm.in: Changed the primary & alternate ftp site to the current
  SourceForge.Net set up.

2002-03-09  lakata <lakata>

  * ModuleCmd_Avail.c: Fixed bug in mkdirnm. There was a check to see if the
  dir eq ".", but was done using a char comparison, not string comparison.
  Caused severe problems if dir was "..", since only first character was used.

2002-03-08  lakata <lakata>

  * INSTALL: Simplified docs by removing details of RKOConfigure and
  describing a typical install on a standard unix box

2002-01-04  rkowen <rkowen>

  * version.c: Minor change to date.

  * ChangeLog, ModuleCmd_Load.c, PROBLEMS, RKOConfigure, doc/modulefile.4.in,
  init.c, testsuite/modulefiles/break/1.0, testsuite/modulefiles/break/2.0,
  testsuite/modulefiles/break/3.0, testsuite/modules.50-cmds/200-break.exp: *
  A 'break' in a modulefile will cause the modulefile to not be added to
  $LOADEDMODULES, but will be considered a successful execution to not affect
  other modulefiles being loaded concurrently (Patch due to Scott Gaskins). *
  Tests and docs added for the above.

2001-12-20  rkowen <rkowen>

  * TODO: Added Harlan Stenn's suggestions, and cleaned it up a bit.

2001-11-05  rkowen <rkowen>

  * ChangeLog, Makefile.in, PROBLEMS, RKOConfigure, configure, configure.in,
  doc/Modules-Paper.pdf, locate_module.c, probetcl,
  testsuite/modules.50-cmds/190-load.exp, version.c: * Fixed problem with
  module load when the full path is given (patch due to Scott Gaskins). *
  Added tests for the above problem. * Added the Modules-Paper in PDF format
  (thanks to Philip Kearns and Leo Butler for raising the issue). * Modified
  probetcl to avoid using the -c option (patch due to Philip Kearns). *
  Modified probetcl to use tclsh first then tcl * Added TCL_VERSION to
  configure and use it in the Makefile to use the -ltcl@TCL_VERSION@ library.

2001-08-18  rkowen <rkowen>

  * ChangeLog, version.c: Release 3.1.5

2001-08-17  rkowen <rkowen>

  * ChangeLog, ModuleCmd_Load.c, cmdPath.c, version.c: * Fixed up cmdPath to
  remove individual items from a path (patch due to Eric Stanley).

2001-08-03  rkowen <rkowen>

  * .ftp, Makefile.in, version.c: Minor fixes for distribution uploading.

  * Makefile.in: Fixed the ftp-local bz2 patch target.

  * .spec.in, ChangeLog, Makefile.in, version.c: * Added bz2 files to
  distribution mix.

2001-07-26  rkowen <rkowen>

  * ChangeLog, cmdPath.c, testsuite/modulefiles/info/isloaded,
  testsuite/modulefiles/loc_dv1/1.0, testsuite/modulefiles/loc_dv1/2.0,
  testsuite/modules.50-cmds/088-info-isloaded.exp,
  testsuite/modules.50-cmds/170-swap.exp, version.c: * Fixed "module swap" to
  put the substituted module in the same path location as the old.  Also added
  a number of tests for this feature. (Bug was pointed out by Leo Butler
  <lbutler@brocade.com>) * Added tests for the "is-loaded" modulefile command
  introduced back in 3.0.8-rko.

2001-07-16  rkowen <rkowen>

  * version.c: Testing to see if a really minor update could be done.

  * INSTALL.RH7x, etc/global/bashrc.in, etc/global/profile.in: Fixed some
  embarrassing typos and editting mistakes.

2001-07-11  rkowen <rkowen>

  * testsuite/modulefiles/versions/1.1, testsuite/modulefiles/versions/1.2,
  testsuite/modulefiles/versions/1.3: More test stragglers for 3.1.3

  * testsuite/modulefiles.other/1.1/version,
  testsuite/modulefiles.other/1.2/version,
  testsuite/modulefiles.other/1.3/version, testsuite/modulefiles/unsetenv/0.9:
  Forgot some straggler test files for 3.1.3

  * ChangeLog, README.perl, configure, configure.in, modulefiles/Makefile.in,
  modulefiles/module-cvs.in, modulefiles/modules.in, modulefiles/use.own.in,
  testsuite/modules.50-cmds/017-use-undo.exp, version.c,
  xref/ModuleCmd_Use.c.html, xref/cxref.function: * Added module-cvs
  modulefile for easy CVS/ftp access to the modules CVS repository. * Added
  README.perl describing Ron Isaacson's Env::Modulecmd perl module
  (Ron.Isaacson@morganstanley.com). * Added further tests for modulefile
  "module use dir_path" * Fixed bug of unloading a modulefile with a "module
  use dir_path"

  * cmdModule.c: Was forcing a "use" even when the "use" was embedded in
  modulefile, which was being unloaded.

  * version.c: Changed the version to 3.1.3a to note that this is not a
  release.

2001-07-09  rkowen <rkowen>

  * ChangeLog, INSTALL, INSTALL.RH7x, ModuleCmd_Use.c, cmdPath.c, cmdSetenv.c,
  configure, configure.in, doc/modulefile.4.in, etc/Makefile.in,
  etc/global/bashrc.in, etc/global/csh.cshrc.in, etc/global/csh.login.in,
  etc/global/csh.modules.in, etc/global/profile.in,
  etc/global/profile.modules.in, etc/skel/.kshenv.in, etc/skel/.profile.in,
  modulefiles/use.own.in, modulefiles/version.in,
  testsuite/modulefiles/use/.version, testsuite/modulefiles/use/1.0.in,
  testsuite/modulefiles/use/2.0.in, testsuite/modulefiles/use/2.1.in,
  testsuite/modulefiles/use/2.2.in, testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.30-userlvl/030-novice.exp,
  testsuite/modules.30-userlvl/035-nov.exp,
  testsuite/modules.30-userlvl/040-advanced.exp,
  testsuite/modules.30-userlvl/045-adv.exp,
  testsuite/modules.30-userlvl/050-expert.exp,
  testsuite/modules.30-userlvl/055-exp.exp,
  testsuite/modules.30-userlvl/090-undef.exp,
  testsuite/modules.35-trace/020-default.exp,
  testsuite/modules.35-trace/030-all-on.exp,
  testsuite/modules.35-trace/031-all-off.exp,
  testsuite/modules.35-trace/040-load-all.exp,
  testsuite/modules.35-trace/041-load-all.exp,
  testsuite/modules.35-trace/042-load-on.exp,
  testsuite/modules.35-trace/043-load-onoff.exp,
  testsuite/modules.35-trace/044-load-ovr.exp,
  testsuite/modules.35-trace/050-disp-onoff.exp,
  testsuite/modules.35-trace/060-dilo-onoff.exp,
  testsuite/modules.35-trace/070-colon.exp,
  testsuite/modules.50-cmds/010-init_ts.exp,
  testsuite/modules.50-cmds/015-use.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/036-unsetenv-x.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/081-info-user.exp,
  testsuite/modules.50-cmds/082-info-user-exp.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/101-badfac.exp,
  testsuite/modules.50-cmds/110-verbose.exp,
  testsuite/modules.50-cmds/115-verbose-msg.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.95-version/010-init_ts.exp,
  testsuite/modules.95-version/020-load.exp,
  testsuite/modules.95-version/020-unload.exp,
  testsuite/modules.95-version/022-load2.exp,
  testsuite/modules.95-version/022-unload2.exp,
  testsuite/modules.95-version/040-xgetenv.exp,
  testsuite/modules.95-version/999-cleanup.exp, utility.c, version.c: * Added
  document file INSTALL.RH7x which explains how to set up an modules
  environment for all users through the system shell files.  Is specific to
  Linux/RedHat 7.x, but is of general applicability. * Added further tests for
  modulefile "module use dir_path" (found an unload bug that will be fixed
  before release) * Environment variable contents are now quoted to preserve
  any embedded environment variables. (Needed for versioning) * Added over 50
  tests specific to module versioning, and testing xgetenv. * Fixed the
  unsetenv on unload function, the feature added in 3.0.6-rko was supposed to
  set the env.var. to the optional third argument. This was to allow old
  env.var. values to be recovered by unraveling a stack set in an other
  env.var.  Added tests for this feature. This is used by the version
  modulefile. * Fixed and updated the version modulefile to allow stacked
  versions to be removed the stack. * Removed an annoying spurious stderr
  newline.

2001-06-22  rkowen <rkowen>

  * ModuleCmd_Help.c: Spurious fprintf(stderr,...) was adding anomalous blank
  lines to the tests.

2001-06-10  rkowen <rkowen>

  * Makefile.in, testsuite/modulefiles.other/README: Fixed the way a
  distribution tar ball is made.  It makes only one CVS connection instead of
  one per file.

2001-06-09  rkowen <rkowen>

  * Makefile.in: Added targets to aid sending the tarball to the ftp sites.

  * ChangeLog, Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Display.c,
  ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_Load.c, ModuleCmd_Switch.c,
  ModuleCmd_Use.c, ModuleCmd_Whatis.c, cmdAlias.c, cmdConflict.c, cmdInfo.c,
  cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c,
  cmdTrace.c, cmdUlvl.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c,
  cmdXResource.c, doc/module.1.in, error.c, getopt.c, locate_module.c, main.c,
  modules.lsm.in, modules_def.h, testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/070-unuse.exp, utility.c, version.c,
  xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Display.c.html,
  xref/ModuleCmd_Help.c.html, xref/ModuleCmd_Init.c.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Switch.c.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Whatis.c.html,
  xref/cmdAlias.c.html, xref/cmdConflict.c.html, xref/cmdInfo.c.html,
  xref/cmdIsLoaded.c.html, xref/cmdLog.c.html, xref/cmdMisc.c.html,
  xref/cmdModule.c.html, xref/cmdPath.c.html, xref/cmdSetenv.c.html,
  xref/cmdTrace.c.html, xref/cmdUlvl.c.html, xref/cmdVerbose.c.html,
  xref/cmdVersion.c.html, xref/cmdWhatis.c.html, xref/cmdXResource.c.html,
  xref/cxref.apdx.html, xref/cxref.function, xref/cxref.variable,
  xref/error.c.html, xref/init.c.html, xref/locate_module.c.html,
  xref/main.c.html, xref/utility.c.html: * Fixed the "module use --append"
  feature, and fixed the tests for "module use", "module use --append", and
  "module unuse". * Changed the global variable names (flags,current_module)
  to (g_flags, g_current_module) to identify their ubiquity in the module
  source.

2001-03-22  rminsk <rminsk>

  * init/python.in: Was not setting the environment variable MODULESHOME

  * ChangeLog: Comment added about mel support

  * configure: Added python

2001-02-15  rminsk <rminsk>

  * version.c: Retracted new version

  * version.c: Bumped version for mel addition

  * utility.c: Added mel (Maya Extension Language) support

2001-02-01  rminsk <rminsk>

  * Makefile.in: Removed other references to "-rko" in version numbers.

  * Makefile.in: Fixed tag rule to use the cvs module "module" instead of
  "module-3.1rko"

  * ChangeLog: Updated for 3.1.1 release.

  * configure.in: Added init/python

  * Makefile.in: Updated version number of 3.0 to 3.1.

  * version.c: Bumped up version number for new release

2001-01-16  rminsk <rminsk>

  * init/python.in: Removing blank lines

  * init/Makefile.in, init/python.in: Fixing typeo's

  * init/Makefile.in, init/python.in: Adding python init files.

  * utility.c: Fixing bug the the _LMFILES_ environment variable.  As the
  _LMFILES_ shrink in size the extra _LMFILES%03d_ were not being unset.  Made
  sure extra _LMFILES%03d_ are removed each time _LMFILES_ is set.  Added
  initial support for scheme (scm, guile).  Made output of ksh (bash, zsh)
  aliases recognize the escape charater ("\"). This was important to be able
  to escape "$".  Anytime an alias had a "$" in it a function was always
  output.  Fixed a bug in search of the LOADEDMODULES environment variable.
  Would not correctly find a module if only a partial module name was given.
  For example "maya/3.0" would be found but "maya" would not.  In the process
  of fixing this bug a possible memory corruption was also fixed.

  * init/csh.in: Removed variable histchar.  It was not being used.  Modified
  to store the current prompt and unset prompt while modules is running.  A
  bug in csh will cause and eval of an eval (eval `eval ...`) to output a
  prompt.  This cause the first eval to try to execute the prompt.

  * init.c: Fixing bug the the _LMFILES_ environment variable.  If the user is
  using csh and _LMFILES_ is large than LMSPLIT_SIZE it gets split into
  _LMFILES.%03d_. For modules to work correctly the split _LMFILES.%03d_ must
  be joined to make _LMFILES_.

2000-11-03  rk <rk>

  * xref/cmdModule.c.html: * Fixed the changed *interpter->result return value
  with Tcl8.3+ (patch due to Jens Hamisch). And some document changes.

  * ChangeLog, INSTALL, cmdModule.c: * Fixed the changed *interpter->result
  return value with Tcl8.3+ (patch due to Jens Hamisch). And some document
  changes.

2000-06-28  rk <rk>

  * ChangeLog, Makefile.in, ModuleCmd_Load.c, README, ccc.h.in,
  xref/ModuleCmd_Avail.c.html, xref/ModuleCmd_Clear.c.html,
  xref/ModuleCmd_Display.c.html, xref/ModuleCmd_Help.c.html,
  xref/ModuleCmd_Init.c.html, xref/ModuleCmd_List.c.html,
  xref/ModuleCmd_Load.c.html, xref/ModuleCmd_Purge.c.html,
  xref/ModuleCmd_Switch.c.html, xref/ModuleCmd_Update.c.html,
  xref/ModuleCmd_Use.c.html, xref/ModuleCmd_Whatis.c.html,
  xref/cmdAlias.c.html, xref/cmdConflict.c.html, xref/cmdInfo.c.html,
  xref/cmdIsLoaded.c.html, xref/cmdLog.c.html, xref/cmdMisc.c.html,
  xref/cmdModule.c.html, xref/cmdPath.c.html, xref/cmdSetenv.c.html,
  xref/cmdTrace.c.html, xref/cmdUlvl.c.html, xref/cmdUname.c.html,
  xref/cmdVerbose.c.html, xref/cmdVersion.c.html, xref/cmdWhatis.c.html,
  xref/cmdXResource.c.html, xref/error.c.html, xref/init.c.html,
  xref/locate_module.c.html, xref/main.c.html, xref/utility.c.html: * Removed
  warning message for unloading a module that's not loaded. * Added source
  code cross-referencing via cxref-1.5b(patched)

  * .cxref, Makefile.in, xref/ModuleCmd_Avail.c.html,
  xref/ModuleCmd_Clear.c.html, xref/ModuleCmd_Display.c.html,
  xref/ModuleCmd_Help.c.html, xref/ModuleCmd_Init.c.html,
  xref/ModuleCmd_List.c.html, xref/ModuleCmd_Load.c.html,
  xref/ModuleCmd_Purge.c.html, xref/ModuleCmd_Switch.c.html,
  xref/ModuleCmd_Update.c.html, xref/ModuleCmd_Use.c.html,
  xref/ModuleCmd_Whatis.c.html, xref/cmdAlias.c.html, xref/cmdConflict.c.html,
  xref/cmdInfo.c.html, xref/cmdIsLoaded.c.html, xref/cmdLog.c.html,
  xref/cmdMisc.c.html, xref/cmdModule.c.html, xref/cmdPath.c.html,
  xref/cmdSetenv.c.html, xref/cmdTrace.c.html, xref/cmdUlvl.c.html,
  xref/cmdUname.c.html, xref/cmdVerbose.c.html, xref/cmdVersion.c.html,
  xref/cmdWhatis.c.html, xref/cmdXResource.c.html, xref/cxref.apdx.html,
  xref/cxref.function, xref/cxref.html, xref/cxref.include,
  xref/cxref.typedef, xref/cxref.variable, xref/error.c.html,
  xref/getopt.c.html, xref/index.html, xref/init.c.html,
  xref/locate_module.c.html, xref/main.c.html, xref/utility.c.html,
  xref/version.c.html: Added cxref-1.5b(patched) generated HTML files showing
  the source code cross-referencing relations.

  * Makefile.in, configure, configure.in, version.c: Minor updates.

  * .cxref, .ftp, .spec.in, ChangeLog, INSTALL, LICENSE.GPL, MACHINES,
  Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c,
  ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Load.c,
  ModuleCmd_Purge.c, ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c,
  ModuleCmd_Whatis.c, PROBLEMS, README, RKOConfigure, TODO, acconfig.h,
  aclocal.m4, ccc.h.in, cmdAlias.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c,
  cmdLog.c, cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c, cmdTrace.c,
  cmdUlvl.c, cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c,
  cmdXResource.c, config.h.in, configure, configure.in, doc/Makefile.in,
  doc/Modules-Paper.doc, doc/module.1.in, doc/modulefile.4.in, error.c,
  etc/Makefile.in, etc/README, etc/add.modules.in, etc/global/csh.login.in,
  etc/global/csh.modules.in, etc/global/profile.in,
  etc/global/profile.modules.in, etc/mkroot.in, etc/skel/.cshrc.in,
  etc/skel/.kshenv.in, etc/skel/.login.in, etc/skel/.profile.in,
  ext/Makefile.in, ext/README, ext/add.ext.in, ext/common/.cshrc.in,
  ext/common/.kshenv.in, ext/common/.login.in, ext/common/.profile.in,
  ext/mkroot.in, ext/skel/.cshrc.ext, ext/skel/.kshenv.ext,
  ext/skel/.login.ext, ext/skel/.modules, ext/skel/.profile.ext, getopt.c,
  getopt.h, init.c, init/.modulespath.in, init/Makefile.in, init/bash.in,
  init/csh.in, init/ksh.in, init/perl.in, init/sh.in, init/tcsh.in,
  init/zsh.in, install.sh, locate_module.c, main.c, modulefiles/Makefile.in,
  modulefiles/dot.in, modulefiles/module-info.in, modulefiles/modules.in,
  modulefiles/null.in, modulefiles/use.own.in, modulefiles/version.in,
  modules.lsm.in, modules_def.h, probetcl, stripmkf,
  testsuite/config/unix.exp, testsuite/etc/apropos.cache, testsuite/etc/bad,
  testsuite/etc/empty, testsuite/etc/rc, testsuite/home/.modulerc,
  testsuite/modulefiles/.moduleavailcache,
  testsuite/modulefiles/.moduleavailcache.202,
  testsuite/modulefiles/.moduleavailcachedir,
  testsuite/modulefiles/.moduleavailcachedir.202,
  testsuite/modulefiles/README, testsuite/modulefiles/alias/2.0,
  testsuite/modulefiles/append/2.0, testsuite/modulefiles/conflict/full,
  testsuite/modulefiles/conflict/module, testsuite/modulefiles/empty/1.0,
  testsuite/modulefiles/help/2.0, testsuite/modulefiles/info/mode1,
  testsuite/modulefiles/info/mode2, testsuite/modulefiles/info/mode3,
  testsuite/modulefiles/info/mode4, testsuite/modulefiles/info/mode5,
  testsuite/modulefiles/info/mode6, testsuite/modulefiles/info/name,
  testsuite/modulefiles/info/shells, testsuite/modulefiles/info/shellsexp,
  testsuite/modulefiles/info/user, testsuite/modulefiles/info/userexp,
  testsuite/modulefiles/loc_dv1/1.0, testsuite/modulefiles/loc_dv1/2.0,
  testsuite/modulefiles/loc_dv1/3.0, testsuite/modulefiles/loc_dv2/.version,
  testsuite/modulefiles/loc_dv2/1.0, testsuite/modulefiles/loc_dv2/2.0,
  testsuite/modulefiles/loc_dv3/.version, testsuite/modulefiles/loc_dv3/1.0,
  testsuite/modulefiles/loc_dv3/2.0, testsuite/modulefiles/loc_dv4/.version,
  testsuite/modulefiles/loc_dv4/1.0, testsuite/modulefiles/loc_dv4/2.0,
  testsuite/modulefiles/loc_dv6/1.0, testsuite/modulefiles/loc_dv6/2.0/1.0,
  testsuite/modulefiles/loc_dv7/.version, testsuite/modulefiles/loc_dv7/1.0,
  testsuite/modulefiles/loc_dv7/2.0/1.0, testsuite/modulefiles/loc_dv7/3.0,
  testsuite/modulefiles/loc_dv8/.version, testsuite/modulefiles/loc_dv8/1.0,
  testsuite/modulefiles/loc_dv8/2.0, testsuite/modulefiles/loc_fq/1.0,
  testsuite/modulefiles/loc_fq/2.0, testsuite/modulefiles/loc_rc1/.modulerc,
  testsuite/modulefiles/loc_rc1/1.0, testsuite/modulefiles/loc_rc1/2.0,
  testsuite/modulefiles/loc_rc2/.modulerc, testsuite/modulefiles/loc_rc2/1.0,
  testsuite/modulefiles/loc_rc2/2.0, testsuite/modulefiles/loc_rc3/.modulerc,
  testsuite/modulefiles/loc_rc3/1.0, testsuite/modulefiles/loc_rc3/2.0,
  testsuite/modulefiles/loc_rc3/3.0, testsuite/modulefiles/loc_rc4/.modulerc,
  testsuite/modulefiles/loc_rc4/.version, testsuite/modulefiles/loc_rc4/1.0,
  testsuite/modulefiles/loc_rc4/2.0, testsuite/modulefiles/loc_rc4/3.0,
  testsuite/modulefiles/loc_rc5/.modulerc, testsuite/modulefiles/loc_rc5/1.0,
  testsuite/modulefiles/loc_rc5/2.0, testsuite/modulefiles/loc_sym/1.0,
  testsuite/modulefiles/loc_sym/alias1, testsuite/modulefiles/loc_sym/alias2,
  testsuite/modulefiles/loc_sym/alias3, testsuite/modulefiles/loc_sym/alias4,
  testsuite/modulefiles/loc_sym/alias5, testsuite/modulefiles/loc_sym/alias6,
  testsuite/modulefiles/loc_sym/exec1, testsuite/modulefiles/loc_sym/exec2,
  testsuite/modulefiles/loc_sym/getvers1,
  testsuite/modulefiles/loc_sym/getvers2,
  testsuite/modulefiles/loc_sym/getvers3,
  testsuite/modulefiles/loc_sym/getvers4,
  testsuite/modulefiles/loc_sym/getvers5,
  testsuite/modulefiles/loc_sym/getvers6,
  testsuite/modulefiles/loc_sym/getvers7,
  testsuite/modulefiles/loc_sym/getvers8,
  testsuite/modulefiles/loc_sym/versinf1,
  testsuite/modulefiles/loc_sym/versinf2,
  testsuite/modulefiles/loc_sym/versinf3,
  testsuite/modulefiles/loc_sym/versinf4,
  testsuite/modulefiles/loc_sym/versinf5,
  testsuite/modulefiles/loc_sym/versinf6,
  testsuite/modulefiles/loc_sym/versinf7,
  testsuite/modulefiles/loc_sym/version1,
  testsuite/modulefiles/loc_sym/version10,
  testsuite/modulefiles/loc_sym/version11,
  testsuite/modulefiles/loc_sym/version12,
  testsuite/modulefiles/loc_sym/version13,
  testsuite/modulefiles/loc_sym/version14,
  testsuite/modulefiles/loc_sym/version2,
  testsuite/modulefiles/loc_sym/version3,
  testsuite/modulefiles/loc_sym/version4,
  testsuite/modulefiles/loc_sym/version5,
  testsuite/modulefiles/loc_sym/version6,
  testsuite/modulefiles/loc_sym/version7,
  testsuite/modulefiles/loc_sym/version8,
  testsuite/modulefiles/loc_sym/version9, testsuite/modulefiles/log/badfac,
  testsuite/modulefiles/log/err_both_1, testsuite/modulefiles/log/err_both_2,
  testsuite/modulefiles/log/err_file, testsuite/modulefiles/log/err_syslog,
  testsuite/modulefiles/module/2.0, testsuite/modulefiles/prepend/2.0,
  testsuite/modulefiles/prereq/full, testsuite/modulefiles/prereq/module,
  testsuite/modulefiles/remove/2.0, testsuite/modulefiles/system/2.0,
  testsuite/modulefiles/trace/all_off, testsuite/modulefiles/trace/all_on,
  testsuite/modulefiles/trace/colon, testsuite/modulefiles/trace/dilo_onoff,
  testsuite/modulefiles/trace/disp_onoff,
  testsuite/modulefiles/trace/disptrac, testsuite/modulefiles/trace/load_all1,
  testsuite/modulefiles/trace/load_all2, testsuite/modulefiles/trace/load_on,
  testsuite/modulefiles/trace/load_onoff,
  testsuite/modulefiles/trace/load_ovr, testsuite/modulefiles/uname/domain,
  testsuite/modulefiles/uname/machine, testsuite/modulefiles/uname/nodename,
  testsuite/modulefiles/uname/release, testsuite/modulefiles/uname/sysname,
  testsuite/modulefiles/uname/version, testsuite/modulefiles/unsetenv/1.0,
  testsuite/modulefiles/user/adv, testsuite/modulefiles/user/advanced,
  testsuite/modulefiles/user/exp, testsuite/modulefiles/user/expert,
  testsuite/modulefiles/user/nov, testsuite/modulefiles/user/novice,
  testsuite/modulefiles/user/undef, testsuite/modulefiles/verbose/msg,
  testsuite/modulefiles/verbose/off, testsuite/modulefiles/verbose/on,
  testsuite/modulefiles/verbose/undef, testsuite/modulefiles/whatis/lines,
  testsuite/modulefiles/whatis/multiple, testsuite/modulefiles/whatis/none,
  testsuite/modulefiles/whatis/single, testsuite/modulefiles/whatis/string,
  testsuite/modules.00-init/005-init_ts.exp,
  testsuite/modules.00-init/006-procs.exp,
  testsuite/modules.00-init/010-environ.exp,
  testsuite/modules.00-init/015-version.exp.in,
  testsuite/modules.00-init/030-shells.exp,
  testsuite/modules.00-init/050-modpath.exp,
  testsuite/modules.00-init/080-begenv.exp,
  testsuite/modules.00-init/090-switches.exp,
  testsuite/modules.10-use/010-init_ts.exp,
  testsuite/modules.10-use/030-use.exp,
  testsuite/modules.10-use/031-append.exp,
  testsuite/modules.10-use/070-unuse.exp,
  testsuite/modules.20-locate/010-init_ts.exp,
  testsuite/modules.20-locate/020-fqual.exp,
  testsuite/modules.20-locate/030-defvers.exp,
  testsuite/modules.20-locate/040-alias.exp,
  testsuite/modules.20-locate/045-symvers.exp,
  testsuite/modules.20-locate/046-getsym.exp,
  testsuite/modules.20-locate/047-symerrs.exp,
  testsuite/modules.20-locate/048-symexec.exp,
  testsuite/modules.20-locate/050-locrc.exp,
  testsuite/modules.20-locate/055-locrcerrs.exp,
  testsuite/modules.20-locate/060-rc.exp,
  testsuite/modules.20-locate/065-rcerrs.exp,
  testsuite/modules.20-locate/070-homerc.exp,
  testsuite/modules.20-locate/095-cleanup.exp,
  testsuite/modules.30-userlvl/010-init_ts.exp,
  testsuite/modules.30-userlvl/030-novice.exp,
  testsuite/modules.30-userlvl/035-nov.exp,
  testsuite/modules.30-userlvl/040-advanced.exp,
  testsuite/modules.30-userlvl/045-adv.exp,
  testsuite/modules.30-userlvl/050-expert.exp,
  testsuite/modules.30-userlvl/055-exp.exp,
  testsuite/modules.30-userlvl/090-undef.exp,
  testsuite/modules.35-trace/010-init_ts.exp,
  testsuite/modules.35-trace/020-default.exp,
  testsuite/modules.35-trace/030-all-on.exp,
  testsuite/modules.35-trace/031-all-off.exp,
  testsuite/modules.35-trace/040-load-all.exp,
  testsuite/modules.35-trace/041-load-all.exp,
  testsuite/modules.35-trace/042-load-on.exp,
  testsuite/modules.35-trace/043-load-onoff.exp,
  testsuite/modules.35-trace/044-load-ovr.exp,
  testsuite/modules.35-trace/050-disp-onoff.exp,
  testsuite/modules.35-trace/060-dilo-onoff.exp,
  testsuite/modules.35-trace/070-colon.exp,
  testsuite/modules.35-trace/095-cleanup.exp,
  testsuite/modules.50-cmds/010-init_ts.exp,
  testsuite/modules.50-cmds/020-setenv.exp,
  testsuite/modules.50-cmds/025-setenv-undo.exp,
  testsuite/modules.50-cmds/030-unsetenv.exp,
  testsuite/modules.50-cmds/035-unsetenv-undo.exp,
  testsuite/modules.50-cmds/040-append.exp,
  testsuite/modules.50-cmds/045-append-undo.exp,
  testsuite/modules.50-cmds/050-prepend.exp,
  testsuite/modules.50-cmds/055-prepend-undo.exp,
  testsuite/modules.50-cmds/060-remove.exp,
  testsuite/modules.50-cmds/065-remove-undo.exp,
  testsuite/modules.50-cmds/070-alias-proc.exp,
  testsuite/modules.50-cmds/075-alias.exp,
  testsuite/modules.50-cmds/077-alias-undo.exp,
  testsuite/modules.50-cmds/080-info-name.exp,
  testsuite/modules.50-cmds/081-info-user.exp,
  testsuite/modules.50-cmds/082-info-user-exp.exp,
  testsuite/modules.50-cmds/083-info-mode.exp,
  testsuite/modules.50-cmds/084-info-mode-exp.exp,
  testsuite/modules.50-cmds/085-info-flags.exp,
  testsuite/modules.50-cmds/086-info-shells.exp,
  testsuite/modules.50-cmds/087-info-shells-exp.exp,
  testsuite/modules.50-cmds/090-uname-proc.exp,
  testsuite/modules.50-cmds/095-uname.exp,
  testsuite/modules.50-cmds/099-uname-cleanup.exp,
  testsuite/modules.50-cmds/100-loglevel.exp.in,
  testsuite/modules.50-cmds/101-badfac.exp,
  testsuite/modules.50-cmds/110-verbose.exp,
  testsuite/modules.50-cmds/115-verbose-msg.exp,
  testsuite/modules.50-cmds/120-prereq-full.exp,
  testsuite/modules.50-cmds/121-prereq-module.exp,
  testsuite/modules.50-cmds/130-conflict-full.exp,
  testsuite/modules.50-cmds/131-conflict-module.exp,
  testsuite/modules.50-cmds/140-system.exp,
  testsuite/modules.50-cmds/150-module.exp,
  testsuite/modules.70-maint/010-init_ts.exp,
  testsuite/modules.70-maint/020-update.exp,
  testsuite/modules.70-maint/030-purge.exp,
  testsuite/modules.70-maint/040-list.exp,
  testsuite/modules.70-maint/043-listno.exp,
  testsuite/modules.70-maint/045-listlong.exp,
  testsuite/modules.70-maint/048-listlongno.exp,
  testsuite/modules.70-maint/050-whatis-load.exp,
  testsuite/modules.70-maint/055-whatis.exp,
  testsuite/modules.70-maint/060-apropos.exp,
  testsuite/modules.70-maint/070-display.exp,
  testsuite/modules.70-maint/080-help.exp,
  testsuite/modules.70-maint/095-cleanup.exp,
  testsuite/modules.90-avail/010-init_ts.exp,
  testsuite/modules.90-avail/020-single.exp,
  testsuite/modules.90-avail/030-multiple.exp,
  testsuite/modules.90-avail/040-wild.exp,
  testsuite/modules.90-avail/050-long.exp,
  testsuite/modules.90-avail/060-empty.exp, testsuite/not_installed,
  testsuite/systest, utility.c, version.c: modules is a shell tool for
  setting-up the user environment on the fly, as it were.  It's a powerful
  mechanism for dynamically changing environment variables, aliases, X11
  resources, etc. It uses an embedded Tcl intrepretor, with a few extensions.
  Therefore, it has a well defined language syntax. Version 3.1 is GPL, and
  includes many improvements over the 3.0beta.

1998-12-11  rk <rk>

  * testsuite/modulefiles/setenv/1.0: modules is a shell tool for setting-up
  the user environment on the fly, as it were.  It's a powerful mechanism for
  dynamically changing environment variables, aliases, X11 resources, etc. It
  uses an embedded Tcl intrepretor, with a few extensions.  Therefore, it has
  a well defined language syntax. Version 3.1 is GPL, and includes many
  improvements over the 3.0beta.

