2022-10-27  SMS.

   DIRSORT V2.0 is based on DIRSORT V1.2-4.  The original program was
written by Lyle W. West.  The changes for V2.0 were made by Steven M.
Schweda (who claims no rights to any of this material).

- Added support for ODS5 extended file names.  (dirsort.c, vms_rms.h
  (new))

- Removed/relaxed various string length restrictions (command line, file
  names, date-time format, ...)  (dirsort.c)

- Program exit status could be SYSTEM-S-NORMAL (1) after a CLI (syntax)
  error/warning and its error message.  (The wrong variable value was
  passed to exit().)  The mix of exit() and sys$exit() has been resolved
  in favor of exit().  Various errors could cause program exit with no
  (or useless) message.  (dirsort.c)

- Changed behavior to agree with that of DIRECTORY when no matching
  files were found:
  - No header (or trailer) is put out.
  - Message at exit is now "%DIRSORT-W-NOFILES, no files found".
  - Exit status is now %X10018290 (%RMS-W-FNF).
  (dirsort.c)

- A truncated file specification (/LAYOUT = TRUNCATED) is now displayed
  with ">" as its last character.  So, for example,
  "123456789012345678901234.txt;12" is a complete 31-character spec, and
  "123456789012345678901234.txt;1>" is a truncated 32-character (or
  longer) spec.  (dirsort.c)

- Updated documentation (/HELP), and removed references to privileges in
  the /VERSION report.  (Note that, despite contrary comments, the
  function CheckPrv() was absent from V1.2-4.)  (AAAREADME.TXT,
  dirsort.c)

- /VERSION report now includes the date-time format, default and the
  DIRSORT_FORMAT logical name value, if defined.  An error message is
  provided if the format string is illegal.  (dirsort.c)

- Removed tab characters from messages for reliable rendering.
  (dirsort.c)

- Undocumented use of "PATH" environment variable has been disabled by
  default.  Define C macro ENABLE_PATH_ENVAR at build time to enable it.
  (dirsort.c)

- Translation of the logical name DIRSORT_FORMAT is no longer limited to
  the process logical name table, so, for example, a system-wide value
  can be specified.  Specify a white-space value (like " ") to restore
  the default format if an existing definition in a lower-priority table
  is undesired.  (dirsort.c)

- Simplified the CLI parsing code preparation.  Replaced the program
  name extracted from the DCL environment with a constant, "DIRSORT".
  One consequence is that the program no longers claims that its name is
  "MCR" when invoked using a command like,
  "mcr sys$disk:[]dirsort /version".  (dirsort.c)

- Replaced much local code used for parsing file specifications with
  more use of $PARSE features.  This should avoid problems with special
  characters in ODS5 extended file specs.  It also allows the user to
  specify a general file spec in the parameter, and get a list of files
  more like that which DIRECTORY gives for the same spec.  Some examples
  of cases where V1.2-4 behaves worse:
    ;           Default directory, highest version of all files.
    [.dir];-1   Directory "[.dir]", version ;-1 of all files.
    [.dir]v*    Directory "[.dir]", files matching "v*.*;*".
  (dirsort.c)

- Eliminated separate support.c module, and header files: defs.h,
  support.h, and version.h.  Incorporated remaining code into dirsort.c.
  Removed various constant definitions (in old defs.h) in favor of
  values from system header files.  Removed some unused variables.
  Moved many variables out of global scope, into main().  Reformed some
  goofy code.

- Eliminated fixdates.com from the kit.  (Useful only to Mr. West?)

- Removed CC option "/standard=vaxc" from the (new) builders, and the
  need for it from the C code.  (dirsort.c)

- Replaced builders to:
    - Support Alpha, IA64, VAX, and X86_64 hardware architectures.
    - Place product files in architecture-specific subdirectories.
    - Eliminate the optional object library (and the DCL script to
      create it, create-lib.com).  Plain object files in a product kit
      created using "zip -V" should work for a re-LINK.
    - (MMS) Generate dependencies for C modules automatically.
  (build_dirsort.com (new), descrip.mms (new), descrip_mkdeps.mms (new,
  generated), descrip_mkdeps.mms (new), descrip_src.mms (new))

- Bugs:
    - Program can't deal with more than one directory at a time.
    - Sub-optimal page layout (wasted space) with /LAYOUT = FILEFIRST or
      /LAYOUT = TRUNCATE.  The maximum length of a truncated name is
      fixed at 31, not user-specifiable.  /TRUNCATE could be independent
      of /LAYOUT, and could take a length value.
    - There could still be ignored error conditions, and other coding
      errors (old and/or new).  With changes this extensive, many things
      are possible, and testing was minimal.

