home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / hcshdemo.zip / csh-os2.zip / README.TOO < prev    next >
Text File  |  1994-06-16  |  73KB  |  1,657 lines

  1. Hamilton C shell(tm) for OS/2(R)  Release Notes 2.2.v
  2. Copyright (c) 1989-1993 by Hamilton Laboratories.  All rights reserved.
  3.  
  4.  
  5. Change Summary
  6.  
  7. The basic release history for the C shell has been:
  8.  
  9.    Dec 1988    1.0   First release, running on OS/2 1.0.
  10.    Jan 1989    1.01  Cleanup and final release for OS/2 1.0.
  11.    Feb 1989    1.02  First release for OS/2 1.1 (Presentation Manager).
  12.    Mar 1989    1.03  Cleanup and base release for OS/2 1.1.
  13.    Aug 1989    1.04  Command line editing and filename and command
  14.                      completion added.
  15.    Mar 1990    1.05  Support for OS/2 1.2, HPFS and long filenames added
  16.                      along with many important utilities including grep,
  17.                      diff, head, tail, sed, etc.
  18.    Feb 1991    1.06  Support for user-defined screen colors, inheritable
  19.                      local variables, higher performance, etc.
  20.    Jul 1992    2.0   First release from a unified codebase supporting
  21.                      OS/2 and Windows NT.
  22.    Apr 1993    2.1   Support for Berkeley mode scripts, better error
  23.                      diagnostics, support for Windows NT March beta.
  24.    Sep 1993    2.2   Complete rebuild for Windows NT final release.
  25.                      Support for starting Win3.x apps seamlessly from
  26.                      the command line under OS/2 2.x.  Addition of the
  27.                      cron utility.
  28.  
  29. Along the way, Hamilton C shell has grown from about 35,000 lines of C
  30. to over 113,000 lines.  Not one line was ported from or written on anything
  31. but OS/2 or Windows NT.
  32.  
  33. This document is a detailed summary of all the changes that were made
  34. along the way from one release to another, beginning with the 2.0 release.
  35. Changes affecting only the NT builds are so indicated.  (Old release notes
  36. for the various 1.03 through 1.06 builds can be found in oldnotes.zip; unzip
  37. it using PKware's pkunzip shareware utility, available on most bulletin
  38. boards.)
  39.  
  40. Changes are presented chronologically, so if you're updating from a previous
  41. release, you'll want to jump in somewhere in the middle to start reading.
  42.  
  43. At the very end of this document is a short list of the known bugs, which
  44. actually tend to be minor limitations in the various releases of OS/2.
  45. You'll also find contact information in case you encounter a problem or
  46. have a suggestion.
  47.  
  48.  
  49. Fix Level 2.0 Changes:
  50.  
  51. 493. First release from a new unified codebase from which both OS/2
  52.     and Windows NT versions can be built.
  53.  
  54. 494. The shell and all the utilities have been fixed so they no longer
  55.     routinely translate a filename to lower case before trying to open it.
  56.     That didn't work in situations with an NFS network connection to a UNIX
  57.     system with case-sensitive filenames.
  58.  
  59.  
  60. Fix Level 2.0.a Changes:
  61.  
  62. 495. [OS/2] The 2.0 version of ls wasn't adding up the allocated sizes of
  63.     directories properly when using the -Lw options.  It does now.
  64.  
  65.  
  66. Fix Level 2.0.b Changes:
  67.  
  68. 496. [OS/2] The C shell can now be run when escaping to the command line from
  69.     the OS/2 1.x and 2.0 installation disks.
  70.  
  71. 497. [NT/MIPS]  Final cleanup on the C shell codebase to make it portable to
  72.     the MIPS RISC processor under NT.
  73.  
  74. 498. [NT]  Trying to run a .bat or .cmd file started cmd.exe but didn't
  75.     actually run the script.  It does now.
  76.  
  77. 499. [NT/x86]  A codegen error in the compiler caused :s/.../.../ operations
  78.     to trash the heap, causing the C shell to crash randomly.
  79.  
  80. 500. [NT]  A minor bug in the common routines used to read number pad
  81.     keystrokes was fixed.
  82.  
  83. 501. [NT]  A number of bugs in tar.exe that caused it problems opening new
  84.     tar files and setting or reporting timestamps on files extracted from or
  85.     listed in a tar file were fixed.
  86.  
  87. 502. [NT]  More no longer fails with a complaint that it can't scroll or
  88.     fill the console if, e.g., you go to the end of a file, page down and
  89.     then search backward for text that's not found.  The console api's were
  90.     erroneously reporting failures when in fact they worked fine.
  91.  
  92.  
  93. Fix Level 2.0.c Changes:
  94.  
  95. 503. [NT] The common screen painting library used by the shell and a number of
  96.     the utilities would sometimes set the cursor incorrectly if scrolling was
  97.     involved.  It should now be correct.
  98.  
  99. 504. [NT] cut.exe couldn't read files specified on the command line.  It can
  100.     now.
  101.  
  102. 505. The di (diff interative) alias for diff -b! (merged diff using color,
  103.     ignoring white space differences) has been added to startup.csh and the
  104.     definition for the mi (more interactive) alias has been fixed for NT.
  105.  
  106. 506. [NT] ver.csh was added to the bin directory.
  107.  
  108. 507. [NT] The common keyboard routines now recognize ctrl-H as the same as a
  109.     backspace and ctrl-[ as an escape.
  110.  
  111.  
  112. Fix Level 2.0.d Changes:
  113.  
  114. 508. A long-standing bug in the shell's command line editing routines that
  115.     could cause the screen to be painted incorrectly has been corrected.
  116.  
  117. 509. [NT] A bug in the common seek logic used in tar, tail, and xd caused them
  118.     to have problems reading files that came in over a pipe on stdin.  That
  119.     problem has been fixed.  binedit, more, sed and tee used the same logic
  120.     and were recompiled even though they were unaffected.
  121.  
  122. 510. A long-standing, but usually benign bug in the more filter's ISAM
  123.     mechanism was fixed.
  124.  
  125. 511. The shell no longer complains under NT nor fails under OS/2 if one tries
  126.     to edit a history reference (e.g., with !!:s/X/Y/) that's > 64K.
  127.  
  128. 512. [OS/2] dskwrite now properly detects and autoformats any unformatted
  129.     disks it's given as disks 2 or following when using dskwrite -ac.
  130.  
  131. 513. The sizeof sample script has been improved to run a bit faster and to
  132.     avoid problems running out of memory in the C shell if a big directory
  133.     is being measured.
  134.  
  135.  
  136. Fix Level 2.0.e Changes:
  137.  
  138. 514. [NT] The common keyboard routines have been fixed to silently gobble up
  139.     CapsLock keystrokes.  They were being passed through to the application.
  140.     The shell, mv, cp, rm and more were affected.
  141.  
  142. 515. [NT] The help screens for label, more and tar and for the internal
  143.     commands hashstat, kill and ps have been edited to replace references
  144.     to OS/2 with NT.
  145.  
  146. 516. eval -h now indicates "success" as its return value.  (It no longer
  147.     causes a loop to exit.)
  148.  
  149. 517. [NT] The C shell no longer litters the output generated by the setenv
  150.     command with current directory variables such as "=C:".  Also, it now
  151.     correctly reads all current directories out of the environment at
  152.     startup.
  153.  
  154. 518. [NT] The C shell now properly treats environmental variable names as
  155.     case-insensitive.  (They're still case sensitive under OS/2.)  The set,
  156.     unset and @ statements are case-sensitive (that's so you can still create
  157.     shell variables that differ from environmental variables only by case)
  158.     but the setenv and unsetenv statements and $var and other variable
  159.     references first try case-sensitive, then case-insensitive variable
  160.     lookups.
  161.  
  162.  
  163. Fix Level 2.0.f Changes:
  164.  
  165. 519. [NT] The NT version of the C shell can now determine, just as the OS/2
  166.     version can, whether a child will run in the same or a different window.
  167.     If it's a different window, the shell immediately prompts for a new
  168.     command.
  169.  
  170. 520. [NT] hlabel.exe now includes a warning in the help screen that setting the
  171.     volume label is disabled under NT due to a kernel limitation.  Also, it
  172.     properly gives an error message if you type "label a:foo".
  173.  
  174.  
  175. Fix Level 2.0.g Changes:
  176.  
  177. 521. [NT/x86] rm -x was broken in the 2.0.e build when we switched to the July
  178.     SDK compiler; the optimizer generated bad code that we didn't spot.
  179.     Rebuilding with optimization turned off with pragmas fixed the problem.
  180.  
  181.  
  182. Fix Level 2.0.h Changes:
  183.  
  184. 522. All the utilities have been cleaned up in preparation for the 32-bit
  185.     release for OS/2 2.0.
  186.  
  187. 523. binedit, chmod, dim, fgrep and head no longer routinely translate
  188.     filenames to lower case, thus avoiding any problems with mixed-case
  189.     filesystems.
  190.  
  191. 524. [OS/2] more no longer has problems forward or backward searching across
  192.     more than 32,000 lines.
  193.  
  194. 525. When moreh [OS/2] or hmore [NT] recognizes that it's reading from a
  195.     file, meaning it can use seeks to re-read any data it discards, it
  196.     now buffers only a 100K window into the file.  That reduces swapping
  197.     under OS/2 and dramatically improves heap performance under NT without
  198.     sacrificing functionality.
  199.  
  200. 526. [NT] The C shell now correctly recognizes that it must wait for DOS apps
  201.     to complete before prompting for another command.
  202.  
  203. 527. [NT] The C shell now responds to Close events from the pull-down on its
  204.     window.
  205.  
  206.  
  207. Fix Level 2.0.i Changes:
  208.  
  209. 528. [OS/2] markexe now understands how to mark 32-bit 2.0 applications.
  210.  
  211. 529. The ts.csh script was broken when quoting rules inside a backquoted
  212.     string were changed at release 1.06 but went unnoticed until now.
  213.     The fix was to delete the now superfluous escaped single quotes.
  214.  
  215. 530. If filename completion matched a file with a ! in the name, it wouldn't
  216.     always escape it.  Sometimes it'd just single quote it, causing it to
  217.     be mistaken for a history reference.
  218.  
  219. 531. des had a couple bugs.  Under NT, it would often fail with a divide by
  220.     zero due to improper initialization.  And under both NT and OS/2, it
  221.     didn't handle EOF if data was being read from stdin properly.  Both
  222.     problems have been fixed.
  223.  
  224.  
  225. Fix Level 2.0.j Changes:
  226.  
  227. 532. [OS/2] Since there's no .. entry in the root of a FAT drive, cd .. there
  228.     wouldn't work.  Instead, the C shell would try cd'ing to one of the CDPATH
  229.     directories.  It now does the right thing.
  230.  
  231.  
  232. Fix Level 2.0.k Changes:
  233.  
  234. 533. [OS/2] The change to markexe at 2.0.i broke it, causing markexe to garble
  235.     the .exe header.  It now works as it should.
  236.  
  237.  
  238. Fix Level 2.0.L Changes:
  239.  
  240. 534. [NT] Complete rebuild of everything for the October Beta version of NT.
  241.  
  242. 535. [NT] Background children are now protected from ^C in a console window
  243.     using the new CREATE_NEW_PROCESS_GROUP option to the CreateProcess api.
  244.     Also, the kill command now uses, by default, the new GenerateConsole-
  245.     CtrlEvent api call to send a ^Break to a child.  The advantage is that
  246.     if the child is willing to accept it, links to any DLL's are closed
  247.     properly.
  248.  
  249. 536. [NT] Support for the new shutdown and logoff signal events has been
  250.     added, allowing copies of the C shell to automatically exit when
  251.     shutdown or logoff is selected from the Program Manager.
  252.  
  253. 537. [NT] Support for the new LocalTime notion has been added to the date
  254.     and ls utilities.
  255.  
  256. 538. Additional work has been done on all the utilities and the shell in
  257.     particular to prepare for a full 32-bit OS/2 2.0 release from one common
  258.     source base.
  259.  
  260. 539. [NT] The -s option to fgrep and grep didn't work.  It does now.
  261.  
  262. 540. [OS/2] A number of bad semaphore races were inadvertently introduced
  263.     when support for NT was added at release 2.0.  Apparently, they never
  264.     caused problems (none were ever reported) but, in any event, they are
  265.     fixed now.
  266.  
  267.  
  268. Fix Level 2.0.m Changes:
  269.  
  270. 541. [NT] The built-in sleep command no longer forgets to close its open
  271.     thread handle.  Previously, after running sleep roughly 5000 times, it'd
  272.     fail, claiming it couldn't start a new thread.
  273.  
  274. 542. [NT] The -i (interactive) option for mv, cp and rm now works.
  275.  
  276. 543. [NT] Minor changes were made to the shell to prepare it for the DEC
  277.     Alpha version of NT.
  278.  
  279. 544. [NT] Support for LocalTime has been added to the touch utility.
  280.  
  281. 545. [NT] The NTVersion (NT Build number) and WinVersion built-in variables
  282.     have been added and used in the ver.csh script.
  283.  
  284. 546. A new -u (unbuffered) option has been added to the C shell to allow
  285.     it to be used over a communications line.
  286.  
  287. 547. First release of a demo version of the shell and all its utilities.
  288.  
  289.  
  290. Fix Level 2.0.n Changes:
  291.  
  292. 548. [NT] Split was broken.  It works now.
  293.  
  294.  
  295. Fix Level 2.0.o Changes:
  296.  
  297. 549. [NT] If an ordinary foreground child process was started, wait would not
  298.     work; it'd think the child never completed.  It works now.
  299.  
  300. 550. [NT] ^C now properly kills nested C shell scripts.  Previously, ^C only
  301.     worked if it happened to come in while the top-most level was running.
  302.  
  303. 551. [NT] The shell could trap in certain situations, usually involving labels.
  304.     For example, the one-line script, "foo: echo hello", would trap.  It
  305.     works now.
  306.  
  307. 552. [NT] If the current directory on the current drive was changed in a
  308.     script or other thread, the shell wouldn't properly set it back for child
  309.     processes created from other threads.  That's been fixed.
  310.  
  311. 553. The w option to a search/replace operation in sed was broken.  It's now
  312.     working.
  313.  
  314. 554. [NT] The w command to sed didn't know how to open a file that didn't
  315.     already exist.  It does now.
  316.  
  317. 555. [NT/MIPS] The search/replace command to sed often failed due to datatype
  318.     misalignment in the compiled sed script.  That's been fixed.
  319.  
  320. 556. [NT] The shell now issues an error message if an attempt is made to pass
  321.     a command line longer than 32,282 characters (the limit for the NT
  322.     CreateProcess call) to a child.
  323.  
  324. 557. The fullpath function now knows not to let .. segments back up over the
  325.     system or resource names in a UNC (network) name.  Also, the driveno
  326.     function now reports an error if its argument has an invalid drive
  327.     specification or is a UNC name.
  328.  
  329. 558. The shell now runs logout.csh scripts properly.  A primordial bug caused
  330.     it to issue a prompt if it found a logout.csh script (it shouldn't have)
  331.     and run just the first statement.
  332.  
  333. 559. [NT] Erroneous statements like "cat >" (i/o redirection with no filename
  334.     following) no longer cause the shell to crash.  (Actually, this bug has
  335.     been in the OS/2 version all along also but just didn't happen to cause
  336.     problems.)
  337.  
  338. 560. [NT] File sharing or other errors that prevented a file from being copied
  339.     are now reported by cp and mv.  Previously, the copy would fail, but
  340.     there'd be no warning.
  341.  
  342.  
  343. Fix Level 2.0.p Changes:
  344.  
  345. 561. Rerunning a statement that set any of the colors variables to a literal
  346.     (e.g., "for i = 1 to 10 do setenv COLORS = black on white; end") used to
  347.     cause a trap.  It works now.
  348.  
  349. 562. Escape characters in a substitution containing command or variable
  350.     subsitutions that were edited to produce more than one word were not
  351.     correctly processed.  E.g.,
  352.  
  353.          echo "`echo a b`:s/a/A/^""
  354.  
  355.     produced:
  356.  
  357.          A b^"
  358.  
  359.     It should have produced (as it does now):
  360.  
  361.          A b"
  362.  
  363. 563. A long-standing, but only recently reported bug that could cause traps
  364.     and assert failures doing a cd +c to a subdirectory on another drive
  365.     has been found and corrected.
  366.  
  367. 564. unset'ing or unsetenv'ing a non-existent variable is no longer treated
  368.     as an error.
  369.  
  370. 565. [NT/Alpha] First release with support for the DEC Alpha processor.
  371.  
  372. 566. [OS/2 2.0] First build with complete, working, debugged support for
  373.     use of 32-bit code and the 32-bit API's under OS/2 2.0.
  374.  
  375. 567. [NT] The SHELL variable, if wasn't already defined in the inherited
  376.     environment, would be set to the pathname of the C shell, but with the
  377.     last character dropped.  This has been fixed.
  378.  
  379. 568. ls.exe now accepts a -q (quiet) option, telling ls not to complain
  380.     about non-existent files.  Also, it's more consistent when it does
  381.     complain.  (Previously, it would not complain if it was asked to look
  382.     for an "impossible" name, e.g., a long filename on a FAT drive.)  ls
  383.     also now looks for an LSOPTIONS environmental variable.
  384.  
  385. 569. sed will now ignore Ctrl-Z characters between statements in a script.
  386.     This change lets it process scripts created with editors that insist
  387.     on pasting a Ctrl-Z (EOF) character onto the end of the files they
  388.     produce.
  389.  
  390. 570. [NT] The help alias has been deleted from startup.csh.  It really
  391.     applied only to OS/2.
  392.  
  393. 571. [NT] The cl.csh (compile and link) and makecpgm.csh (make all the C
  394.     programs) scripts have been added to the samples directory along with
  395.     a sample skip file containing fragments of lines that should be skipped in
  396.     the compiler/linker output.
  397.  
  398.  
  399. Fix Level 2.0.q Changes:
  400.  
  401. 572. [NT & OS/2 2.0] A very minor performance improvement was made, eliminating
  402.     some unnecessary checks for stack overflow.  (The check was superfluous
  403.     because under NT and 2.0, the system grows the stack automatically as
  404.     needed anyway.)
  405.  
  406. 573. The popup that appears if an internal assertion fails in the C shell
  407.     now goes away, showing what was underneath it, when you press a keystroke.
  408.  
  409.  
  410. Fix Level 2.0.r Changes:
  411.  
  412. 574. Minor fixups were done to the C shell, patchlnk, dskread, dskwrite,
  413.     markexe and setrows to allow demo versions to be built for OS/2.
  414.  
  415. 575. The cookie passed to demo versions of the utilities now expires
  416.     more slowly.  Previously, the cookie expired too fast to allow the
  417.     utilities demos to be run reliably from a CD-ROM.
  418.  
  419. 576. [NT] A typo in the kill -h help screen was corrected.
  420.  
  421. 577. [NT/x86] A compiler optimization bug in rm, mv, and cp that affected
  422.     recursive operations against directories has been fixed by turning off
  423.     certain optimizations where the problem occurred.
  424.  
  425. 578. [NT] pwd now exits with a correct return code of 0 if it's successful.
  426.     Also, it now reports an error if asked for the current directory on an
  427.     invalid drive.
  428.  
  429.  
  430. Fix Level 2.0.s Changes:
  431.  
  432. 579. [NT] ps was incorrectly reporting running threads as zombies and zombies
  433.     (threads that had ended but which hadn't been cleaned up yet) as running.
  434.     That's been fixed.
  435.  
  436.  
  437. Fix Level 2.0.t Changes:
  438.  
  439. 580. [NT] touch didn't properly recognize 4-digit year numbers.  It does now.
  440.  
  441. 581. [NT] ls and pwd didn't properly interpret the MIXEDCASEDRIVES variable
  442.     (off-by-one error).  Also, the shell and pwd didn't show current
  443.     directories in the right case on mixed case drives.
  444.  
  445. 582. [NT] The cl.csh script in samples directory didn't work properly with the
  446.     DEC Alpha compiler; it does now.  Also, it's been enhanced to look for the
  447.     skip file in the same directory with the cl.csh script.
  448.  
  449. 583. [NT] If a child of the C shell changed the console mode (e.g., disabling
  450.     processed input, thus turning off Ctrl-C processing) but didn't reset
  451.     things before exiting, it could affect the shell.  That's been fixed; now
  452.     the C shell resets the console mode every time it prompts for a new
  453.     command from the keyboard.
  454.  
  455.  
  456. Fix Level 2.0.u Changes:
  457.  
  458. 584. [NT] The C shell now ensures that the drive letters passed to the NT
  459.     kernel for the current directories are always upper case.  Lower case
  460.     drive letters have been found to be a problem when spawning POSIX
  461.     children.
  462.  
  463.  
  464. Fix Level 2.0.v Changes:
  465.  
  466. 585. The C shell now supports command and variable substitution in <<-style
  467.     inline i/o ("here" documents).  Quoting (with single, double or back
  468.     quotes) or escaping any part of the word immediately following the <<
  469.     operator suppresses the substitutions.
  470.  
  471. 586. Error reporting is now substantially improved.  Messages will now show
  472.     the line number of the statement that failed, not where it was called
  473.     from even if it was inside a user-defined procedure.  Also, by default,
  474.     the shell will print out a complete trace of the call stack showing
  475.     arguments passed to procedures, scripts, eval statements, etc., all the
  476.     way down the stack.  (To suppress call stack dumps, invoke the C shell
  477.     with the new -t option.)
  478.  
  479. 587. A new mode that provides more strict compatibility with the original
  480.     BSD C shell has been added.  Triggered by trying to run a script that
  481.     starts with #!/bin/csh or if the shell is invoked with the new -B
  482.     option, the C shell will attempt to process statements in a more fully
  483.     Berkeley-compatible fashion.  (Scripts that do not start with #!/bin/csh
  484.     will still be processed according to Hamilton C shell rules, even if
  485.     the -B option is used to request Berkeley compatibility interactively.)
  486.     In BSD compatibility mode:
  487.  
  488.    a. The status variable will reflect the return code from the rightmost
  489.       stage of a pipeline.  The tailstatus variable will be ignored.
  490.    b. All the shell variables will be snapshotted and all new variables
  491.       made local to the thread.
  492.    c. Berkeley-style $var[...] indexing notation will be used, where the
  493.       indexing is by word selection operators (like the :-editing operators)
  494.       rather than by expression.
  495.    d. All variable arrays (except argv) will start with element 1.
  496.       Accessing element 0 will give a null.
  497.    e. $0 or $argv[0] will be the scriptname.  $argv will be the rest of the
  498.       argument vector.  The bsdargv variable will be ignored.
  499.    f. The # character will not need to be followed by white space to be
  500.       considered the start of a comment.
  501.    g. The patterns in a case test (inside a switch) will be strings and need
  502.       not be quoted, rather than arbitrary expressions.  Also, the switch
  503.       value is evaluated as a wordlist which may contain variable or command
  504.       substitutions and wildcards and then rendered as a string.
  505.    h. endif and endsw will be predefined aliases for end (but only when
  506.       closing an if or switch, respectively).  breaksw will be a pre-defined
  507.       alias for break.
  508.    i. "set foo" and "setenv foo" will set foo to a null string, not dump
  509.       its value.
  510.    j. / and /= will perform integer division.
  511.    k. The right operand of the =~ and !~ pattern matching operators will be
  512.       taken as a word which may contain wildcards.
  513.    l. In an expression, a variable must be preceded by $.  If it doesn't, it'll
  514.       be taken as a literal string.
  515.  
  516.     The changes should allow most scripts to run without problems.  However,
  517.     there will still be a few differences:
  518.  
  519.    a. The escape character will still be controlled by the escapesym
  520.       variable (shared across all threads), which defaults to ^, not \.
  521.    b. Environmental variables will still be shared.  Changing them in a
  522.       script will change them as seen by the parent.
  523.    c. The special meaning of several break statements on one line will
  524.       not be supported.
  525.    d. unset and unsetenv still do not accept patterns.
  526.    e. The following commands are not supported: bg, exec, fg, glob, jobs,
  527.       limit, nice (but eval gives similar functionality), nohup, notify,
  528.       stop, suspend, unlimit and %job.
  529.    f. History references inside alias definitions will still not be
  530.       supported.
  531.    g. The (...) construct will isolate only the current directory, not all
  532.       variables and other state information.
  533.  
  534. 588. Running a statement in the background using the & flag at the end of the
  535.     line will cause a new "job ID" number rather than a thread ID to be
  536.     printed.  Any threads, processes or screens spawned by that thread will
  537.     inherit that same job ID.  The job ID can be passed to the kill command
  538.     to kill everything associated with that background job.  Also, the ps
  539.     command has been enhanced to show job ID numbers.
  540.  
  541. 589. $* is now supported as an alias for $argv.
  542.  
  543.  
  544. Fix Level 2.0.w Changes:
  545.  
  546. 590. A number of minor problems associated with supporting substitutions
  547.     inside <<-style inline i/o documents were fixed:  a) If there was a syntax
  548.     error, the prompt would not be properly reset to prompt1.  b) Single and
  549.     double quotes should have been treated as ordinary characters in inline
  550.     i/o.  (To quote something, only the escape character can be used.)  
  551.     c) Any line containing a substitution caused a blank line to be added
  552.     to the history list.  d) If a substitution was at the end of a line, an
  553.     extra space was erroneously added.
  554.  
  555. 591. [NT] The sleep command left a thread entry lying around in the threads
  556.     list after it had already exited.  It's now properly cleaned up.
  557.  
  558. 592. Filename completion with ^F did not quote special characters if there was
  559.     only a partial match.  It does now.
  560.  
  561. 593. Doing a "sed '#'" caused a segment fault.  It now works.
  562.  
  563.  
  564. Fix Level 2.0.x Changes:
  565.  
  566. 594. [NT] rm didn't work on read-only directories even with -f or -x.  It
  567.     does now.
  568.  
  569. 595. The more -t option for setting tabstops from the command line didn't
  570.     work.  It does now.
  571.  
  572. 596. diff, uniq, cut, fgrep, grep and sed shared a common i/o buffering
  573.     routine that had a bug that could cause them to crash or produce
  574.     erroneous results on files with line ends other than \r\n.  That's
  575.     been fixed.
  576.  
  577.  
  578. Fix Level 2.0.y Changes:
  579.  
  580. 597. There was a bug in the Berkeley compatibility mode introduced at 2.0.v
  581.     that would cause the shell to hang if a #!/bin/csh script that contained
  582.     any set statements was run more than once.  That's been fixed.
  583.  
  584.  
  585. Fix Level 2.0.z Changes:
  586.  
  587. 598. Calling the abs() built-in function without an argument caused the shell
  588.     to crash.  It now gives an error message as it should.
  589.  
  590.  
  591. Fix Level 2.0.27 Changes:
  592.  
  593. 599. The changes made at 2.0.v to provide call stack dumps caused line
  594.     numbers not to be shown in parser error messages when compiling scripts.
  595.     That's been fixed.
  596.  
  597. 600. The -I, +I, -O and +O command line options have been added to the C shell
  598.     to allow insert mode to be customized.  Type "csh -h" for more info.
  599.  
  600. 601. [NT] mv didn't properly move read-only files across disk partitions.  It'd
  601.     make a copy, then complain it didn't have proper access.  It works now.
  602.  
  603.  
  604. Fix Level 2.1 Changes:
  605.  
  606. 602. [NT] First complete rebuild for the March beta.
  607.  
  608. 603. [NT] tar now knows that NT keeps track of timezone information.  The TZ
  609.     variable and the -g and -G options are no longer used.
  610.  
  611. 604. [NT] The shell is dramatically faster, especially at inserting into long
  612.     command lines and compiling scripts on the DEC Alpha and MIPS R4x00.
  613.  
  614. 605. The -b option has been added to the C shell to turn off Berkeley mode
  615.     even on scripts that start with #!/bin/csh.
  616.  
  617. 606. Error messages from the C shell should now all be properly displaying line
  618.     numbers where appropriate.
  619.  
  620. 607. A bug that potentially could have (but was never reported to have) caused 
  621.     the shell's unproc and unalias commands to crash was fixed.
  622.  
  623. 608. [NT] The cl.csh script in the samples directory has been updated for
  624.     the March NT beta and now knows about the hybrid compilers on the MIPS
  625.     and Alpha machines.  Use -old to get the old compilers.
  626.  
  627. 609. [NT] hlabel.exe can now set the label on a volume.  (There was no Win32
  628.     API to support this under the October Beta.)
  629.  
  630. 610. [NT] The C shell -Z option now works.  (Previously, it was ignored under
  631.     NT because there was no support for it under the October Beta Win32.)
  632.  
  633. 611. [NT] The rm.exe command has been renamed hrm.exe and an "alias rm hrm"
  634.     command added to the default startup.csh script to avoid conflicts with
  635.     the brain-dead Microsoft rm.exe command supplied with the NT SDK.
  636.  
  637. 612. [OS/2 2.0] Inexplicably, DOS VDM applications were being started in
  638.     invisible windows.  Accessing them required typing Ctrl-Esc.  They're
  639.     now properly started in visible windows.
  640.  
  641.  
  642. Fix Level 2.1.a Changes:
  643.  
  644. 613. [NT] Touch, mv, cp and tar now know how to set the timestamps on
  645.     directories.
  646.  
  647. 614. csh -XC now looks for a command immediately following the "C".  It no
  648.     longer tries to parse any remaining characters in that word as option
  649.     characters and no longer requires the command to start in the next word.
  650.  
  651.  
  652. Fix Level 2.1.b Changes:
  653.  
  654. 615. [NT] Hlabel would only change the label on the current drive.  It works
  655.     properly now.
  656.  
  657. 616. The C shell didn't properly handle $i[$j] and $i[$k[^]] references in
  658.     Berkeley compatibility mode.  That's been fixed.
  659.  
  660. 617. Set variables weren't always inherited by child threads in Berkeley mode.
  661.     For example,
  662.  
  663.        % set i = 1; echo `echo $i`
  664.  
  665.     didn't work.  It does now.
  666.  
  667.  
  668. Fix Level 2.1.c Changes:
  669.  
  670. 618. In Berkeley mode, double quoted substitutions involving $0 could fail.
  671.     E.g.,
  672.  
  673.       % echo "$0 a"
  674.  
  675.     caused the shell to crash.  It works now.
  676.  
  677. 619. The Berkeley C shell would accept case clauses that didn't have colons
  678.     following the test and those with quotes around the pattern.  This wasn't
  679.     the documented behavior but some users did write scripts that depended on
  680.     it so Hamilton C shell now allows that also in Berkeley mode.
  681.  
  682. 620. for i = 1 to 1 by -1; echo $i; end would loop thru 1, 0, -1, -2, -3, etc.,
  683.     rather than exiting after the first iteration.  That's fixed now.
  684.  
  685.  
  686. Fix Level 2.1.d Changes:
  687.  
  688. 621. [NT] Trying to set path[i] garbled the global variables lock.  That
  689.     statement would appear to work, but, e.g., trying then to do a setenv
  690.     would hang and eventually crash.  That's been fixed.
  691.  
  692. 622. In Berkeley mode, other indexed variable references such as @ i[$j]++
  693.     didn't index properly.  They do now.
  694.  
  695. 623. [NT] The cl.csh script in the samples directory didn't properly work
  696.     with -O options.  It does now.
  697.  
  698.  
  699. Fix Level 2.1.e Changes:
  700.  
  701. 624. [NT] The dskwrite and dskread utilities have (finally!) been added.
  702.  
  703. 625. [NT/x86] Tar no longer fails when it tries watching for binary files and
  704.     automatically turning off \n to \r\n conversions.  (This was actually a bug
  705.     in all versions of tar; for some reason, it just didn't manifest itself
  706.     except in the NT/x86 version.)
  707.  
  708.  
  709. Fix Level 2.1.f Changes:
  710.  
  711. 626. [NT] A bug in NT's DOS subsystem caused DOS apps started from the C shell
  712.     to think they were running in the wrong current directory.  E.g.,
  713.  
  714.       1 C% cd \tmp
  715.       2 C% dosapp
  716.       3 C% cd ..
  717.       4 C% dosapp <-- Still thought it was in \tmp
  718.  
  719.     This build contains a workaround for the problem.
  720.  
  721. 627. In Berkeley compatibility mode, the C shell no longer tokenizes #
  722.     separately to recognize comments. Thus, where previously
  723.  
  724.       echo `echo '#r'`
  725.  
  726.     produced "# r", it now properly produces "#r".
  727.  
  728.  
  729. Fix Level 2.1.g Changes:
  730.  
  731. 628. dskread and dskwrite didn't properly handle missing ordinates, e.g.,
  732.     (35,,) or ranges that weren't closed, e.g., (50,0,0)-.  It works now.
  733.  
  734. 629. [NT] dskwrite didn't work at all writing an entire disk.  It does now.
  735.  
  736. 630. [NT] ls no longer generates a spurious "'*.*' does not exist" message
  737.     when listing a blank formatted diskette.  Also, it now does give a
  738.     message when listing an unformatted diskette.
  739.  
  740.  
  741. Fix Level 2.1.h Changes:
  742.  
  743. 631. Changes made to support stack tracing caused the shell to crash if the
  744.     prompt was set to something involving command substitution.  That's fixed.
  745.  
  746. 632. In certain cases, the diagnostics would indicate an error at line 1 when
  747.     it should have said something else.  That's been fixed.
  748.  
  749. 633. The C shell's -I option didn't work.  It does now.
  750.  
  751. 634. [NT/Alpha] Expressions such as i += 1, where i is an integer, were
  752.     incorrectly producing a floating point result due to a compiler
  753.     optimization error.  In this build, optimization has been turned off
  754.     for the relevant module to ensure correct results.
  755.  
  756. 635. [NT/Alpha] du didn't correctly report the total space on a drive.
  757.     This build contains a workaround.
  758.  
  759. 636. [NT] dskwrite -F crashed.  It works now.
  760.  
  761. 637. [NT/Alpha] dskread and dskwrite would frequently fail, complaining they
  762.     couldn't read the drive parameters, if the diskette drive had not
  763.     previously been accessed.  Rerunning dskread or dskwrite would work.
  764.     This has been traced to a bug in the Alpha/NT system; the current build
  765.     contains a workaround to ensure correct results.
  766.  
  767. 638. [NT] It's now possible to redirect stdout to a device such as \\.\a: or
  768.     \\.\tape0.
  769.  
  770.  
  771. Fix Level 2.1.i Changes:
  772.  
  773. 639. tar complained about archives created on UNIX SVR4.  The SVR4 tar writes
  774.     all octal fields in the header as null-terminated strings, contrary to
  775.     spec as defined in the BSD 4.3 Programmer's Manual which says that many
  776.     of the fields should be terminated with space + null and others not
  777.     terminated at all.  Hamilton tar now knows to accept this variant format
  778.     without complaint.  Also, when tar extracts files, it now sets the archive
  779.     bit on the newly-extracted files.
  780.  
  781. 640. mv and cp now retain the case of any filenames they move.  Previously,
  782.     if one typed "mv foo ..", the resulting file would be in whatever case
  783.     was typed, not what it had been stored as previously.
  784.  
  785. 641. [NT/Alpha] Expressions like 2**10 resulted in floating point results
  786.     (albeit correct ones) when they should have produced integer results.
  787.     This build contains a workaround.
  788.  
  789. 642. [NT] winerror.c and winerror.exe were added to the samples directory
  790.     and the help proc definition were added to startup.csh.  This gives a
  791.     convenient means of getting the Win32 error message corresponding to a
  792.     return code.
  793.  
  794. 643. [NT] The source command should have tried pasting a .csh extension onto
  795.     the filename if the name as specified didn't exist.  It does now.
  796.  
  797. 644. Command substitution now processes certain unquoted escape sequences in
  798.     the backquoted string before parsing it.  This ensures, e.g., that the
  799.     following will work, producing "1 2 3 4 5":
  800.  
  801.       echo `for i = 1 to 5 do ^
  802.       echo $i ^
  803.       end`
  804.  
  805. 645. If callstack reporting was turned off with csh -t, there was a possibility
  806.     (never reported) that the shell could crash following stack pops.  That's
  807.     been fixed.
  808.  
  809. 646. The shell now generates callstack reports for scripts read with the
  810.     source command and now reports the correct linenumber if a syntax error
  811.     is encountered inside the sourced script.
  812.  
  813. 647. [NT/Alpha] strings was broken due to a bug in the Alpha compiler.  This
  814.     build contains a workaround.
  815.  
  816. 648. [NT] International keyboard keying conventions (e.g., ALT + 8 to create
  817.     the "[" character on a German keyboard) should now be working.  This
  818.     change affects the C shell, mv, cp, rm, more and des.
  819.  
  820.  
  821. Fix Level 2.1.j Changes:
  822.  
  823. 649. [NT/x86] diff had two problems with binary files:  a bug in the code that
  824.     automatically detected binary data could cause diff to crash.  Also, a
  825.     compiler optimization bug caused diff to claim there were differences in
  826.     binary files that were in reality exactly the same.  This build fixes
  827.     both those problems.
  828.  
  829.  
  830. Fix Level 2.1.k Changes:
  831.  
  832. 650. [NT] The change made at 2.1.i for international keyboards ended up
  833.     breaking support for Ctrl + other keys such as Enter or [.  That's now
  834.     fixed, affecting the C shell, mv, cp, rm, more and des.
  835.  
  836. 651.  Startup.csh changed to show how users might customize it to have operands
  837.     to dir wildcarded by the C shell or by cmd.exe itself.
  838.  
  839. 652. [NT] The cl.csh script in the samples directory now accepts the CPU
  840.     variable values typed in mixed case.
  841.  
  842. 653. [NT] The C shell no longer hangs if you attempt to kill a child Win3.x
  843.     app and then do a ps.  (But you still can't kill the Win3.x children,
  844.     apparently due to a bug in NT.)
  845.  
  846. 654. [NT] The C shell now places =X:-style current directory variables into
  847.     the environment for all valid drives at startup, even for drives for
  848.     which the current directory is the root.  This is to work around an
  849.     apparent problem in the VDMs under NT on the RISC machines.
  850.  
  851.  
  852. Fix Level 2.1.L Changes:
  853.  
  854. 655. The changes made to support the -B (Berkeley compatability) option
  855.     broke the use of the bsdargv variable and could cause the shell to
  856.     crash.  bsdargv is more-or-less obsolete now, but it certainly shouldn't
  857.     cause a crash; it's been fixed in this build.
  858.  
  859. 656. The startup.csh file has been fixed so that the alias/proc mechanisms
  860.     used to intercept copy, xcopy, etc., will still work if the shell is
  861.     invoked with -B.  (The problem was with the @ s = nowild statements in
  862.     the aliases.   In Berkeley mode, a $ was needed to make a valid
  863.     expression.)
  864.  
  865.  
  866. Fix Level 2.1.m Changes:
  867.  
  868. 657. The changes made to support the -B (Berkeley compatability) option
  869.     introduced a bug in indexed variable evaluations done in the prompt1
  870.     and prompt2 variables.  Also, some never reported but latent bugs in
  871.     iterated statements containing indexed variable references were fixed.
  872.  
  873.  
  874. Fix Level 2.1.n Changes:
  875.  
  876. 658. Yet another UNIX tar was discovered that formatted octal fields in
  877.     the headers slightly differently than the spec required, causing our
  878.     tar to reject the file.   This release contains a fix to cause tar to
  879.     accept virtually anything that looks like a plausible octal number.
  880.  
  881. 659. Filename expansion now knows to quote or escape any { or } characters
  882.     in any files it matches.
  883.  
  884.  
  885. Fix Level 2.1.o Changes:
  886.  
  887. 660. [NT] The C shell now knows to ignore nonsensical Ctrl-<key> combinations.
  888.     Previously, these keystrokes could cause the C shell to get confused about
  889.     the cursor position.
  890.  
  891. 661. [NT/Alpha] Problems with expressions for which workarounds were added
  892.     at 2.1.h and 2.1.i have finally been tracked down to a legitimate coding
  893.     bug in the long precision math routines for the Alpha.  It's corrected
  894.     in this build.
  895.  
  896.  
  897. Fix Level 2.1.p Changes:
  898.  
  899. 662. sed no longer allows "." to match either CarriageReturn or NewLine.  This
  900.     ensures that
  901.  
  902.          echo abc | sed 's/./& /g'
  903.  
  904.     sensibly produces "a b c \r\n", not "a b c \r \n ".
  905.  
  906. 663. Typing a few characters onto the command line, pressing Escape and then
  907.     End caused the C shell to put the cursor in the leftmost column in the
  908.     window rather than, as it should have, in the column following the prompt.
  909.     That's been fixed.
  910.  
  911. 664. [NT] The cl.csh script now knows how to handle C++ files with .cpp
  912.     or .cxx extensions, resources in .rc, .res or .rbj files, and create
  913.     either console (default or -console) or graphical (-GUI) applications.
  914.  
  915. 665. [NT/x86] The args.exe, dumpenv.exe, myecho.exe and rcode.exe files in
  916.     the samples directory had never been rebuilt since the October beta.
  917.     They worked on the March beta but not the later builds.  They have
  918.     now been rebuilt.
  919.  
  920.  
  921. Fix Level 2.1.q Changes:
  922.  
  923. 666. [OS/2] The startwin.exe utility has been added.  This is a tiny PM
  924.     program that can be used to start Win3.x apps seamlessly on the desktop 
  925.     under OS/2 2.x.  It's automatically invoked by the C shell if you type
  926.     the name of a Win3.x app when running under OS/2 2.x.  For more info,
  927.     type "startwin -h".
  928.  
  929. 667. The C shell now intercepts the situation where a PM child under OS/2
  930.     or a non-console app under NT is being run and stdout or stderr is tied
  931.     to the C shell's console window.  Since console handles aren't inheritable
  932.     in these cases, the C shell will instead pass a handle to the input end
  933.     of a pipe and start a new background thread to copy anything written into
  934.     that pipe onto the screen.  This lets ordinary printf's be used in PM
  935.     or Win32 GUI apps without losing the output.
  936.  
  937. 668. In Berkeley mode, the C shell no longer does any history expansion inside
  938.     comments.
  939.  
  940.  
  941. Fix Level 2.2 Changes:
  942.  
  943. 669. [NT] A complete rebuild of the whole product on the release versions
  944.     of NT on all three platforms.
  945.  
  946. 670. [OS/2] If a child process ended with a hard error or a trap, the
  947.     C shell didn't dump out the call stack.  It does now.
  948.  
  949. 671. The C shell no longer routinely translates the PATH directory names
  950.     to lower case.
  951.  
  952. 672. Processing of special characters inside single- or double-quoted
  953.     strings has been improved slightly.  It's now possible to type, e.g.,
  954.  
  955.        set prompt1 = '$ansi("bright yellow")$cwd '
  956.  
  957. 673. ls.exe now gives an error message if a UNC name it's given doesn't
  958.     exist.  Previously, the message was generated only for non-existent
  959.     local names.
  960.  
  961. 674. [NT] cl.csh in the samples directory has been updated for the final
  962.     release of NT, which does not use an ntdll.lib.  It now accepts -O...
  963.     optimization options which override the defaults.  When it finds a
  964.     skip file, it sets the shell variable, skip, to the full pathname; that
  965.     allows the ferr alias to work even if cl is called first from its own
  966.     directory and later from another directory.  Also, cl knows that in
  967.     the final release for the Alpha, acc can (finally!) use the INCLUDE
  968.     environment variable; it's no longer necessary to break it up into
  969.     a series of -I options.  Finally, the _MT symbol is now defined.
  970.  
  971. 675. [NT] cp now knows how to set the timestamps on any read-only directories
  972.     it copies.
  973.  
  974. 676. head, tail and tabs had a bug that caused the [ in an ANSI escape
  975.     sequence to be turned into two ['s if it fell on a buffer boundary
  976.     when expanding tabs.
  977.  
  978. 677. The demo.exe supplied with the demo version of the C shell no longer
  979.     uses the existing HOME variable even if it's defined.  That was causing
  980.     problems when HOME pointed to something with different/missing login.csh
  981.     or startup.csh files.  Also, under NT, it now registers a signal handler
  982.     so it won't exit before its child has exited.
  983.  
  984. 678. It's now possible to wildcard drive letters.  E.g.,
  985.  
  986.          ls *:\*\bin
  987.  
  988.     now works.  If an * or ? is specified for the drive letter wildcard,
  989.     then the set specified by the DRIVEMASK environmental variable is used.
  990.     If DRIVEMASK has not been set, the drives c: thru z: (as may exist) are
  991.     searched.  To search drives a: and b:, which are usually floppies, you
  992.     must specify them explicitly, e.g., [a-z]:\*\bin.  Also, if the path
  993.     is on one of the MIXEDCASEDRIVES, the entire resulting path will be in
  994.     the correct case.
  995.  
  996. 679. fullpath now puts the resulting pathname into the actual case stored
  997.     in the filesystem if the the path is on one of the MIXEDCASEDRIVES.
  998.     Otherwise, it puts the result into all lower case.
  999.  
  1000. 680. ls wouldn't report anything on a UNC drive if invoked with the current
  1001.     drive was one of the MIXEDCASEDRIVES.  It works now.  Also, MIXEDCASEDRIVES
  1002.     can now accept a list of UNC servers and/or drives following the range
  1003.     of drive letters.  For example:
  1004.  
  1005.        setenv MIXEDCASEDRIVES = d-f,\\alpha\drive-c,\\beta
  1006.  
  1007.     means that drives d: thru f:, drive-c on \\alpha, and all drives on
  1008.     \\beta are mixed case.  \\ without a machine name means all UNC names
  1009.     should be reported in mixed case.  Individual list items should be
  1010.     separated by commas, semicolons or white space.
  1011.  
  1012. 681. du now complains if you ask for it to report on something other than
  1013.     a: thru z:.
  1014.  
  1015. 682. cp and mv no longer attempt to set the timestamp of an existing directory
  1016.     when merging in another directory (e.g., in doing "mv a: .").
  1017.  
  1018. 683. [NT] cp and mv no longer give a bogus message about not being able to
  1019.     query path info about the root directories on diskettes.
  1020.  
  1021. 684. [OS/2] newer and older failed to compare the seconds component if two
  1022.     timestamps matched down to the minutes.  That's fixed.
  1023.  
  1024. 685. The cron utility has been added.  For help, type "cron -h".
  1025.  
  1026. 686. The -Y option to suppress the installation of an interrupt handler
  1027.     has been added to the C shell.  Under NT, this option is ignored.
  1028.  
  1029. 687. fgrep -x didn't match lines that didn't happen to cross buffer
  1030.     boundaries.  It should now work in all cases.  Also, a minor change
  1031.     in the interface to internal get_line routine was made in fgrep, grep,
  1032.     and cut.
  1033.  
  1034. 688. The C shell now accepts empty statement lists in an if/then/else,
  1035.     following a default: case in a switch statement or in (...) or
  1036.     {...} groups for better compatibility with the Berkely C shell.
  1037.  
  1038. 689. more didn't properly truncate the filename in the prompt at the bottom
  1039.     of the window if the filename was too long.  Under NT, that caused it
  1040.     to fail completely.  Under OS/2, it ran, but it couldn't display command
  1041.     keystrokes.  All that's fixed.
  1042.  
  1043. 690. [NT] If dskread/dskwrite is unable to open a drive because of a
  1044.     sharing violation, it waits 3 seconds and tries again.  This is to
  1045.     allow any writes in the system buffers to get flushed to the drive.
  1046.  
  1047.  
  1048. Fix Level 2.2.a Changes:
  1049.  
  1050. 691. [NT] The mt (mag tape) utility has been added.  Type "mt -h" for help.
  1051.  
  1052. 692. Tar now ensures that it never writes blocks of less than 512 bytes
  1053.     at a time.  That was important for writing to the tape device under NT.
  1054.  
  1055. 693. [NT] dskread and dskwrite will now sleep up 7 seconds in 100 millisecond
  1056.     increments, waiting for a slow diskette to free up rather than a flat,
  1057.     all-or-nothing 3 seconds.
  1058.  
  1059.  
  1060. Fix Level 2.2.b Changes:
  1061.  
  1062. 694. [NT] Changes (mostly just to the makefiles) to support a port to another
  1063.     unannounced RISC processor running Windows NT.
  1064.     
  1065. 695. [NT] strings -v didn't properly display the filenames associated
  1066.     with the strings it found.  It works now.
  1067.  
  1068.  
  1069. Fix Level 2.2.c Changes:
  1070.  
  1071. 696. [NT] If the C shell was started with a title bar longer than 127
  1072.     characters, it would crash.  That's fixed.
  1073.  
  1074.  
  1075. Fix Level 2.2.d Changes:
  1076.  
  1077. 697. [NT] More minor changes for yet another port to an unannounced RISC
  1078.     processor running Windows NT.
  1079.  
  1080. 698. [NT] mt.exe didn't format error messages properly.  It does now.
  1081.  
  1082. 699. [NT] touch.exe had an uninitialized variable that caused it to set
  1083.     timestamps off by a random number of milliseconds.  That's fixed.
  1084.  
  1085.  
  1086. Fix Level 2.2.e Changes:
  1087.  
  1088. 700. Changes made at release 2.2 related to better support for mixed case
  1089.     drives created a bug in the fullpath built-in function which caused a
  1090.     number of problems on a mixed case drive:  (a) fullpath("*.*") returned
  1091.     "c:\foo\." rather than "c:\foo\*.*", (c) under NT, fullpath opened a
  1092.     FindFirstFile directory handle that it would forget to close, making it
  1093.     impossible to delete the directory, (d) the shell would claim it
  1094.     couldn't find executable files in the current directory, (e) if nohashing
  1095.     was set to 2, then the shell wouldn't be able to delete any directory
  1096.     which had been a current directory at a time when any external program
  1097.     was run.  All these (seemingly different) problems were the result of
  1098.     the same 2-line bug, now fixed.
  1099.  
  1100. 701. Those same changes at 2.2 to support mixed case also involved turning
  1101.     all filenames to all lower case on non-mixed case drives in the fullpath
  1102.     function and in the filename editing functions (:b, :e, :f, :t).  That
  1103.     caused problems for a large customer and has been backed out.
  1104.  
  1105. 702. [NT] The C shell now uses _beginthread/_endthread to start or exit any
  1106.     threads it creates instead of calling CreateThread directly.  Microsoft
  1107.     has advised that the C run-time library (including even basic functions
  1108.     like malloc) may cause memory leaks if _beginthread isn't used.
  1109.  
  1110. 703. [NT/Risc machines] tr -s (squeeze option) didn't work.  It does now.
  1111.  
  1112. 704. [NT] A bug in the common display routines caused ANSI escape sequences
  1113.     to be parsed incorrectly if the escape sequence was broken across a
  1114.     buffer boundary.  The failure was a very rare event, but it could
  1115.     affect lots of utilities.  It's fixed in this build.
  1116.  
  1117. 705. [NT] xd -w didn't work properly.  It does now.
  1118.  
  1119. 706. A set of sed scripts have been added to the samples directory for
  1120.     converting Bourne/Korn shell scripts into C shell scripts.  Customers have
  1121.     reported these sed scripts eliminate about 85% of the work of converting
  1122.     shell scripts.
  1123.  
  1124.  
  1125. Fix Level 2.2.f Changes:
  1126.  
  1127. 707. Statements joined with the && conditional execution operator were
  1128.     viewed as having failed with an error (causing loops to exit, etc.) if
  1129.     the leftpart returned a non-zero return code.  It should not have been
  1130.     an error and is now fixed.
  1131.  
  1132.  
  1133. Fix Level 2.2.g Changes:
  1134.  
  1135. 708. If there were any command or variable substitutions inside a <<-style
  1136.     "here document", the line number was incorrectly incremented a second
  1137.     time.  That's been fixed.
  1138.  
  1139. 709. Cron has been enhanced to treat blank lines and lines beginning with
  1140.     # as comments.  It also now give a warning if the values specified in
  1141.     any particular field are not monotonically increasing (to help catch
  1142.     mistakes forgetting to use 24-hour times).  Finally, a bug in the
  1143.     parsing of the day/date specification fields has been fixed.
  1144.  
  1145. 710. The C shell has been enhanced to support use of Tab and Shift-Tab for
  1146.     file completion.  Repeatedly pressing Tab gives the first and following
  1147.     matches, one at a time.  Shift-Tab starts at the end and works backward.
  1148.     To disable Tab completion, start the C shell with the -T option.  (You
  1149.     may wish to use the CSHOPTIONS variable to do this.)
  1150.  
  1151. 711. Heapstat figures could become garbled if filename completion was used
  1152.     and it resulted in a large number matches.  That's corrected.
  1153.  
  1154. 712. A dollar sign that's not followed by a valid variable reference is now
  1155.     treated as literal text rather than as an error.  That makes it more
  1156.     convenient, e.g., to type UNC names such as \\alpha\d$; it's no longer
  1157.     necessary to remember to escape the $.
  1158.  
  1159. 713. A bug in processing of the MixedCaseDrives variable has been fixed.
  1160.  
  1161.  
  1162. Fix Level 2.2.h Changes:
  1163.  
  1164. 714. The Tab completion introduced at 2.2.g had a few bugs:  If there were
  1165.     no matches found, the shell crashed.  The original wildcard string was
  1166.     garbled if one tabbed all the way thru the ring back to the original
  1167.     wildcard.  There were some minor memory leaks.  Finally, the help
  1168.     information was wrong:  -T _disables_ tab completion.  These problems
  1169.     have all been fixed.
  1170.  
  1171. 715. [NT] The blksize utility has been added to the samples directory.  It
  1172.     can be useful for reading/writing tape devices that support only certain
  1173.     blocksizes.
  1174.  
  1175. 716. [NT] cp no longer allows one to destroy a file by copying it over the
  1176.     top of itself.
  1177.  
  1178.  
  1179. Fix Level 2.2.i Changes:
  1180.  
  1181. 717. More work on tab completion:  when tab completion is enabled, a plain
  1182.     tab can be typed as Ctrl-Tab.  When -T is specified, tab completion is
  1183.     now still available, but as Ctrl-Tab and Shift-Tab.
  1184.  
  1185. 718. Aliases now support arguments using the history reference-style syntax
  1186.     used by the Berkeley C shell.  If there are no references, any arguments
  1187.     are simply pasted on the end of the expansion as before.  For example:
  1188.  
  1189.       1 D% alias test echo ^!^* world
  1190.       2 D% alias test
  1191.       test        echo !* world
  1192.       3 D% test hello
  1193.       hello world
  1194.       4 D% alias test echo hello
  1195.       5 D% test world
  1196.       hello world
  1197.  
  1198. 719. Long-form history references now properly support braces around the
  1199.     argument.  E.g., "!{!}" is the same as "!!".
  1200.  
  1201. 720. [NT] "mt -v status" now continues dumping the tape device status even
  1202.     if it cannot determine the block number at which the device is positioned.
  1203.     Also, some of the status information was garbled; it's now correct.
  1204.  
  1205. 721. Editing operators may now be used inside the curly braces in a variable
  1206.     reference, e.g., ${cwd:h}.  Also, any number of braces may be nested
  1207.     around a variable substitution.
  1208.  
  1209. 722. A memory leak when aliases were unaliased has been fixed.
  1210.  
  1211. 723. The member.csh script has been added to the samples directory.
  1212.  
  1213. 724. (...) statement groups and {...} expressions weren't being evaluated
  1214.     correctly.  The status code was being discarded.  (That made {...}
  1215.     expressions pretty useless.)  That's fixed now.  Also, {...} expressions
  1216.     no longer push & pop the directory stack on entry and exit.
  1217.  
  1218.  
  1219. Fix Level 2.2.j Changes:
  1220.  
  1221. 725. Wildcarding and filename completion didn't work with MixedCaseDrives
  1222.     set if the pattern contained a ".." or "." level.  That's fixed.
  1223.  
  1224. 726. Doing Shift-Tab, then Tab skipped over the step of reposting the
  1225.     original wildcard string.  That's fixed.
  1226.  
  1227. 727. The -Z option has been added to rm.exe (hrm.exe under NT) to allow
  1228.     a file to be completely overwritten with binary zeros before deletion,
  1229.     thus guaranteeing that no one can "undelete" the file later.
  1230.  
  1231. 728. [NT] The change made to cp at 2.2.h was too conservative and caused
  1232.     it to refuse to some copies that were legitimate, e.g., "copy foo\bar .".
  1233.     That now works.
  1234.  
  1235. 729. tar has been dramatically improved.  Over 30% more code was added,
  1236.     to provide these new features and improvements:
  1237.     a) It now is able to read/write CPIO ascii and binary files and to
  1238.        automatically recognize them when it encounters them.
  1239.     b) It now knows how to do \r\n -> \n conversions to an archive even
  1240.        when it's writing the archive to a pipe or a tape device where seeking
  1241.        back to the header to fixup the size field is impossible.  (It now
  1242.        uses a prescan of the data if seeking is not going to be possible.)
  1243.     c) A new -ff variation on the fullpath option causes tar to write the
  1244.        entire pathname specified on the command line (including any drive
  1245.        letter and colon) into the archive.  This isn't really legal for
  1246.        restoration on a UNIX machine, but it does let you use tar to back
  1247.        up more than one drive at a time.
  1248.     d) If \'s were typed in filenames given on the command line, tar would
  1249.        not convert those to /'s in the archive.  That caused problems for
  1250.        restoration on a UNIX machine.  tar now converts all \'s to /'s.
  1251.     e) A lot of work was done to directly support tape drives under NT.
  1252.        Tape devices can now be opened as an archive file using the name
  1253.        \\.\tape0.  It's now possible to specify a blocksize to be used in
  1254.        reading/writing the archive.  Also, if tar discovers the archive
  1255.        is on a tape device, tar will try to ensure that it's using a
  1256.        blocksize that's compatible with the drive and that the drive has
  1257.        been properly initialized.
  1258.     f) The -v (verbose) option now causes tar to report the format (TAR vs.
  1259.        CPIO binary vs. CPIO ASCII) and byte sex was used in the archive.
  1260.     g) The -b (bytesex) option didn't work.  It does now.
  1261.     h) If a file being added to an archive is on a drive listed in the
  1262.        MixedCaseDrives environment variable, the filename will be stored
  1263.        into the archive in mixed case.
  1264.  
  1265. 730. uniq -u didn't report the last line if it was unique.  It does now.
  1266.  
  1267. 731. Null argument words weren't being passed to child processes started
  1268.     from the C shell.  E.g.,
  1269.  
  1270.        1 C% myecho hello "" world
  1271.        'myecho' 'hello' 'world'
  1272.        arg length = 19 characters.
  1273.  
  1274.     It should have (and now, does) produce:
  1275.  
  1276.        'myecho' 'hello' '' 'world'
  1277.        arg length = 20 characters.
  1278.  
  1279. 732. The sample startup.csh has been modified so that it can be re-invoked
  1280.     by the same copy of the C shell without causing the layer number to be
  1281.     incremented.
  1282.  
  1283. 733. [Demo versions] The maximum number of commands that can be typed before
  1284.     the demo exits, forcing the user to start a new copy has been raised from
  1285.     5 commands to 10 commands.
  1286.  
  1287.  
  1288. Fix Level 2.2.k Changes:
  1289.  
  1290. 734. If certain wildcarding situations with MixedCaseDrives, the shell would
  1291.     forget to close a directory handle, making it impossible to delete the
  1292.     directory without exiting the shell.  That's fixed.
  1293.  
  1294. 735. More work on cp to avoid problems copying files on top of themselves,
  1295.     this time treating the case "cp x d:" where x is on d:.
  1296.  
  1297.  
  1298. Fix Level 2.2.L Changes:
  1299.  
  1300. 736. Corrected minor typos in the tar help screens.
  1301.  
  1302. 737. [NT] Minor support work for unannounced RISC platforms.
  1303.  
  1304. 738. [NT] A new, more standard makefile has replaced the old samples.mak
  1305.     in the samples directory.
  1306.  
  1307.  
  1308. Fix Level 2.2.m Changes:
  1309.  
  1310. 739. A bug in the goto statement implementation that could cause access
  1311.     violations in the C shell was fixed.
  1312.  
  1313. 740. Minor typos in the tar help screens were fixed.
  1314.  
  1315.  
  1316. Fix Level 2.2.n Changes:
  1317.  
  1318. 741. Incrementing or decrementing an indexed built-in variable (e.g.,
  1319.     processid[1]++) actually changed argv, not the intended variable.  That's
  1320.     fixed.
  1321.  
  1322. 742. The new tar was incorrectly writing directory names as if the -f option
  1323.     was specified, even if it wasn't.  Files themselves were added correctly.
  1324.     Now, both should be right.  Also, when listing the contents of a tar
  1325.     archive, tar printed the trailing / following directory names, just as
  1326.     they appeared in the archive.  That trailing / is no longer shown, making
  1327.     the output a little more like that of ls.
  1328.  
  1329. 743. [NT] Trying to move a directory from one partition to another would fail
  1330.     with a sharing violation, claiming the directory was in use by another
  1331.     process, if the directory contained subdirectories.  That's fixed.
  1332.  
  1333. 744. If MixedCaseDrives was used, wildcards like ..\..\* would fail if used
  1334.     more than 2 levels down from the root.  That's fixed.
  1335.  
  1336. 745. Ctrl-C interrupt handling has been improved.  Interrupts now bubble
  1337.     up better from interrupted child processes and threads to the threads
  1338.     that created them.  
  1339.  
  1340. 746. The C shell no longer abitrarily sets its exit code to 1 when it
  1341.     should be 0.
  1342.  
  1343.  
  1344. Fix Level 2.2.o Changes:
  1345.  
  1346. 747. The new tar was properly reading cpio ASCII files, but wasn't writing
  1347.     them correctly.  Support for cpio binary files just didn't work at all.
  1348.     Appends to either tar or cpio files also didn't work.  All this should
  1349.     be working now.
  1350.  
  1351.  
  1352. Fix Level 2.2.p Changes:
  1353.  
  1354. 748. Environment variables could be properly set to zero words, but if a
  1355.     new child copy of the C shell was started, it'd parse the value it was
  1356.     passed as a single word consisting of the null string.  That's fixed.
  1357.  
  1358. 749. If ignoreerors was set to 2 (ignore everything), then continue, break,
  1359.     goto, exit, logout and return statements were treated as nops.  That's
  1360.     fixed.
  1361.  
  1362. 750. The -e (execute only, no logging to history) and -L (load history)
  1363.     options have been added to the source command.  Also, the -n (no
  1364.     execute) option has been changed to do a syntax check, consistent
  1365.     with the -n option for the C shell itself.
  1366.  
  1367. 751. If the C shell is started with the -n (no execute) option, exit didn't
  1368.     work.  It does now.
  1369.  
  1370.  
  1371. Fix Level 2.2.q Changes:
  1372.  
  1373. 752. [NT] The mt -f option didn't work.  It does now.
  1374.  
  1375. 753. source -s could cause the shell to crash if it was trying to read
  1376.     from the keyboard.  The bug could apparently (though never reported)
  1377.     also cause other failures.  The problem is now fixed.
  1378.  
  1379. 754. If the new argument notation was used in an alias, then word separator
  1380.     characters were incorrectly handled.  Aliases such as the following
  1381.     didn't work, but should now:
  1382.  
  1383.        alias x  (echo ^!^*; echo hello)
  1384.  
  1385.     Also, errors involving unpaired quotes in an alias expansion such as
  1386.     the following were overlooked.  They're now caught.
  1387.  
  1388.        alias y echo "'"
  1389.  
  1390.  
  1391. Fix Level 2.2.r Changes:
  1392.  
  1393. 755. The demo version of cron were looking for csh.exe; they should have
  1394.     been looking for cshdemo.exe.
  1395.  
  1396. 756. Minor work to support a demo version of the C shell that would expire
  1397.     at a future date.
  1398.  
  1399.  
  1400. Fix Level 2.2.s Changes:
  1401.  
  1402. 757. [NT] The work done at release 2.2.e to use _beginthread instead of
  1403.     CreateThread has been undone after it was discovered that the thread
  1404.     handle returned by _beginthread is unreliable.  The C shell and all the
  1405.     utilities and samples now use the single-threaded CRTL, locking each
  1406.     use with a critical section.  In general, things are now a bit smaller
  1407.     and a bit faster.
  1408.  
  1409. 758. [NT] Everything has been recompiled on Daytona.  It should, however,
  1410.     still be fully compatible with the released NT 3.1 build.
  1411.  
  1412. 759. [NT] dskread and dskwrite now use paragraph-aligned (16-byte aligned)
  1413.     buffers for all I/O to the diskette.  Something changed in Daytona,
  1414.     non-paragraph-aligned buffers used to work under NT 3.1, but stopped
  1415.     working on the MIPS under Daytona.
  1416.  
  1417. 760. [NT] The blksize utility in the samples directory now uses a paragraph-
  1418.     aligned buffer.
  1419.  
  1420. 761. Tar didn't work if you tried backing up a root directory.  Under NT,
  1421.     it did nothing; under OS/2, it crashed.  That's now fixed.
  1422.  
  1423. 762. Sed now accepts escape sequences like \r and \n in search and replace
  1424.     expressions.  Also, the help information for static text operations
  1425.     (a\, c\ and i\) has been made a bit more readable.
  1426.  
  1427. 763. [NT] The cl.csh sample script has been updated for the Daytona beta.
  1428.  
  1429. 764. [NT] The tape device always reports an error, ERROR_BUS_RESET, if
  1430.     GetTapeParameters is called immediately after a new tape has been
  1431.     inserted.  Calling GetTapeParameters again gives useful information.
  1432.     The mt and tar utilities have been fixed to do that second attempt.
  1433.  
  1434. 765. [NT] The eraseshort operation has been added to mt.
  1435.  
  1436. 766. [NT] Some additional nuisance messages produced by the Daytona compilers
  1437.     have been added to the skip file in the samples directory.
  1438.  
  1439.  
  1440. Fix Level 2.2.t Changes:
  1441.  
  1442. 767. Expressions in an elif clause were evaluated in Hamilton C shell mode,
  1443.     even inside #!/bin/csh scripts, where clearly Berkeley rules should be
  1444.     used.  That's been fixed.
  1445.  
  1446. 768. [NT] Under Daytona (NT Release 3.5) or later, the C shell now starts
  1447.     child processes with error mode set to zero, just as cmd.exe does.
  1448.     The C shell itself uses a non-zero error mode to disable popups,
  1449.     allowing the shell to intercept any error conditions.  That's important
  1450.     to allow unattended scripts to be run.  But error mode was inheritable
  1451.     under NT 3.1 and it caused problems with some 3rd party apps that
  1452.     just assumed they'd be started with error mode = 0.  Daytona has a
  1453.     new option to CreateProcess to allow apps running with a non-zero
  1454.     error mode to start children with a zero error mode.
  1455.  
  1456.  
  1457. Fix Level 2.2.u Changes:
  1458.  
  1459. 769. [NT] Changes made at 2.2.s to use CreateThread instead of _beginthread
  1460.     and GlobalAlloc instead of malloc introduced a bug into the C shell
  1461.     and cron:  their use of GlobalReAlloc was flawed and caused any
  1462.     reallocations (e.g., if editing caused the command line to grow beyond
  1463.     4 lines) to fail.
  1464.  
  1465. 770. Dskwrite and cp, rm and mv can now diagnose more clearly those
  1466.     failures due to write-protected media.
  1467.  
  1468. 771. cron now considers a Ctrl-Z character in a crontab as an end-of-file.
  1469.     Also, if any of first five fields is garbled, the message is better.
  1470.  
  1471. 772. The line numbers in any messages resulting from a garbled command
  1472.     specified with -C or -c are now correct.  A counter hadn't been
  1473.     re-initialized after login.csh and startup.csh were read.
  1474.  
  1475. 773. Tar's verbose messages now mention the blocksize it's using.
  1476.  
  1477.  
  1478. Fix Level 2.2.v Changes:
  1479.  
  1480. 774. Support for escape sequences such as \r, added to sed at build 2.2.s,
  1481.     has been added to grep.  Hex escape sequences, which didn't work right
  1482.     in sed, have been fixed and work properly in both sed and grep.
  1483.  
  1484. 775. Sed and grep now accept span expressions using the \{n,m\} syntax.
  1485.     E.g., grep '10\{2,4\}1' will match 1001, 10001 and 100001, but not
  1486.     101 or 1000001.
  1487.  
  1488. 776. The rot13 alias (for decoding off-color jokes on Internet) has been
  1489.     added to startup.csh.
  1490.  
  1491. 777. A number of improvements were made to tar:
  1492.  
  1493.       a. [NT] Tar would crash in its error message routine if it was asked
  1494.          to copy a file to the archive that was open for writing by another
  1495.          process.  That's fixed. 
  1496.       b. [NT] Tar now normally rewinds the tape device at the start and
  1497.          at the finish of the operation.  This can be suppressed with the
  1498.          new -N (no rewind) option.
  1499.       c. Tar's messages about suppressing \r\n -> \n line end conversions on
  1500.          binary files now appear only if the -v (verbose) option is selected.
  1501.       d. If it encounters a file that can't be copied to the archive, tar now
  1502.          just gives a warning and continues; it used to give a message and
  1503.          just quit.
  1504.       e. The spurious messages about garbled headers are suppressed for
  1505.          empty tar files.  
  1506.       f. [NT] Failed attempts to set the blocksize on a tape device are now
  1507.          treated as cause for a warning message, not a fatal error.
  1508.  
  1509. 778. The sh_2_csh.csh script had some out-of-date references to an
  1510.     sh-2-csh subdirectory.  Because the hyphen isn't a legal character on
  1511.     CD-ROM filesystem, that directory was renamed but the change wasn't
  1512.     made to the script.  Now it's correct.
  1513.  
  1514. 779. [NT] The how2tar.txt and how2tar.wri files were added to the distribution
  1515.     disks to explain how to get tar to work with a tape drive under NT.
  1516.  
  1517. 780. The license.txt file was added to each of the .zip files on the demo
  1518.     disks.
  1519.  
  1520.  
  1521.  
  1522. Known Bugs
  1523.  
  1524. 1.  A long-standing problem has been that if you tried to run certain apps
  1525.     such as MAKE in the background (using & at the end of the line) or piped
  1526.     into MORE, they would "hang" apparently for no reason until a keystroke
  1527.     was pressed.  The problem was that the OS/2 process completion logic was
  1528.     requesting a semaphore in KBDCALLS.DLL that was already owned by any
  1529.     process in that window that might be sleeping in a KbdCharIn call.  Until
  1530.     another keystroke was pressed, that semaphore was never released and the
  1531.     background process was never allowed to cleanly exit.
  1532.  
  1533.     This bug has been logged by IBM as APAR JR04161 and has been fixed in
  1534.     a CSD 5050 for OS/2 1.3 with a new KBDCALLS.DLL.  That CSD is available
  1535.     on request from IBM or your local dealer.  Alternately, the new DLL is
  1536.     available on request from Hamilton Laboratories or can be downloaded from
  1537.     the listings area in the 'hamilton' conference on Bix.
  1538.  
  1539. 2.  The keyboard editing logic only checks to see if the cursor's been moved
  1540.     by a background process or thread when it reads the first keystroke.  That
  1541.     catches most situations, but if you begin typing a command and then some
  1542.     background activity starts writing to the screen or moving the cursor,
  1543.     the result can be a scrambled display.
  1544.  
  1545. 3.  The Microsoft OS/2 link editor shipped with MSC 5.1 can fail, reporting
  1546.     error L1101, "invalid object module," if it is called with a very long
  1547.     list of object files either directly by the C shell or even by a copy of
  1548.     cmd.exe running as a child of the C shell.  Packing some of the object
  1549.     modules into a .lib file before linking overcomes the problem.  More
  1550.     rarely, it may report L1102, "unexpected end of file," even when a .lib
  1551.     is used.
  1552.  
  1553.     This problem has been traced by Microsoft's Online technical support
  1554.     staff to a bug in Microsoft's C library routines used by the linker.
  1555.     The C library can fail if the process has a maximum file handle
  1556.     count above the system default of 20.  OS/2 allows any particular process
  1557.     to increase its maximum but not lower it; further, child processes
  1558.     inherit their initial maximum count from their parents.  The problem
  1559.     then arises because csh.exe needs to be able to open lots of handles
  1560.     (because you could spawn lots of threads or long pipelines) and sets
  1561.     the maximum to 255 at initialization, which is inherited by the linker
  1562.     and fails when the linker calls the C library.
  1563.  
  1564.     A new version of the linker, using a corrected C library, is now
  1565.     shipping with Microsoft C 6.00 and 6.00a and does fix the problem.
  1566.     But if you must use the MSC 5.1 linker, you can use the patchlnk.exe
  1567.     utility to "zap" the particular instruction byte that is in error from
  1568.     a JLE to a JB.  Type patchlnk -h for more info.
  1569.  
  1570.     Alternately, we've added a special (ugly) -Z option to csh.exe that
  1571.     tells it _not_ to boost its maximum file handle count.  To use this
  1572.     option, you _must_ invoke csh.exe -Z in a separate window, directly from
  1573.     Start Programs; for the reasons above, it won't work if run as a child of a
  1574.     normal invocation of csh.exe.  Be aware, though, that with only 20 handles,
  1575.     you may find it won't let you run some long pipelines, etc., you might
  1576.     otherwise be able to.
  1577.  
  1578. 4.  Under OS/2 releases 1.x, the C shell is not able to spawn applications
  1579.     to which you have execute, but not read privilege.  This really applies
  1580.     only to people using network servers since the FAT and HPFS filesystems
  1581.     don't provide any way of marking a file this way.  The solution is make
  1582.     the file readable.
  1583.  
  1584.     The C shell does not use DosQAppType to determine whether a given .exe
  1585.     file is a full screen, text windowable or PM graphics application due
  1586.     to a bug in the kernel in releases prior to OS/2 2.0.  If QAppType
  1587.     is called from one thread while another is sleeping in a filesystem-
  1588.     related call, e.g., DosFindNext, QAppType can cause the other call
  1589.     to return garbage because it apparently trashes the per-process name
  1590.     cache the kernel maintains.  The solution the C shell uses is to go out
  1591.     and read the .exe itself to look at the tag bits.  For this reason, if
  1592.     it can't read it, it can't spawn it.
  1593.  
  1594. 5.  Under IBM OS/2 EE 1.2 CSD level WR04098 and Microsoft OS/2 1.21 with
  1595.     LAN Manager 2.0 and possibly other builds issued around year-end, 1990,
  1596.     the shell and utilities are occasionally unable to list all the contents
  1597.     of a directory.  The problem is a bug in the OS/2 networking code, not
  1598.     the C shell and occurs only if (1) the directory is read over a network,
  1599.     (2) directory entries are read (as the C shell does for higher performance)
  1600.     in blocks, rather than one at a time and (3) the total number of characters
  1601.     in all the filenames in the directory happens to be just right.  In all
  1602.     cases observed, adding or deleting any arbitrary entry in the directory
  1603.     makes the problem go away.
  1604.  
  1605.     IBM has developed a fix.  If you're an IBM customer, you can request a
  1606.     copy of the new netwksta.sys file being distributed as APAR IC02287 by
  1607.     calling 1-800-237-5511 or by contacting your local IBM representative.
  1608.     You can also download it from the listings area of my 'hamilton' vendor
  1609.     support conference on Bix or contact me directly and I'll mail you
  1610.     a copy.
  1611.  
  1612.     In the meantime, you can work around this problem by defining and
  1613.     setting the environmental variable NETWORKBUG = 1.
  1614.  
  1615. 6.  If you install the C shell as the PROTSHELL and select View Icon in
  1616.     Group-Main, the default OS/2 icon will be shown, not the C shell's
  1617.     icon.  But clicking on it, the C shell that starts up will have the
  1618.     correct icon when it runs.  We consider this a bug in OS/2; IBM claims
  1619.     this is how it's supposed to work.
  1620.  
  1621. 7.  Under the OS/2 2.0 6.167 beta and LA builds, the C shell is not able to
  1622.     change its title bar and icon even if it's installed as the PROTSHELL.
  1623.     Here again, the problem is OS/2 2.0, not the C shell.  This problem is
  1624.     fixed under the 6.304E, GA and later releases; change the OS2_SHELL line
  1625.     in your config.sys to read:
  1626.  
  1627.          set OS2_SHELL=c:\hamilton\bin\csh.exe -L
  1628.  
  1629.     (filling in the appropriate pathname).
  1630.  
  1631. 8.  More.exe and moreh.exe fail if you have an 8514 display under OS/2 2.0
  1632.     builds prior to 6.307.  IBM has issued a new display.dll to fix the
  1633.     problem.  It can be downloaded from the listings area in the hamilton
  1634.     conference on Bix or requested directly from us.
  1635.  
  1636.  
  1637.  
  1638. Thank you for using Hamilton C shell.
  1639.  
  1640.  
  1641.                   Douglas A. Hamilton
  1642.                   June 16, 1994
  1643.  
  1644.                   Hamilton Laboratories
  1645.                   13 Old Farm Road
  1646.                   Wayland, MA  01778-3117
  1647.                   U.S.A.
  1648.  
  1649.          phone:   508-358-5715
  1650.            FAX:   508-358-1113
  1651.  
  1652.    BIX Network:   hamilton
  1653.     CompuServe:   70034,2025
  1654.       MCI Mail:   389-0321
  1655.          Telex:   6503890321
  1656.       Internet:   3890321@mcimail.com or hamilton@bix.com
  1657.