RELEASE 2.3 June 10th 1994 RELEASE 2.3 June 10th 1994 Version 2.3 Release Notes: Release 2.3 has a few bugs fixed, already, and some new functionality. Changes Functionality: 230 Beta Release 1. Fix bug in select code with put the wrong value in ${name}. 2. Fix bug read command which stopped prompt from being displayed. 3. Changing EDITOR or VISUAL should update line edit mode. 4. Fix bug with semicolon after a [[..]] on if construct. 5. Fix bug in exec >{filename} which returns incorrect value. 6. Add PATHEXTS functionality to allow a function to be invoked based on a file extension. 7. Fix bug in Here Documents so that the list is correctly released. 8. Fix bug in . program which causes re-direction to be lost. 9. Fix \a in VI edit mode so that it generates \a and not a. 10. Fix WATCOM C library so that stat on . in the root works correctly. 11. Enable extended keyboards in non-DESQview mode 12. Fix signal bug on v command in VI editing mode. 13. Get SHELL set up correctly for MSDOS & OS/2. 14. Debug EMACS editing mode. 231 Beta Release 15. Fix bug in stdargv code which does not handle quotes and escaped quotes correctly (actually fixed in 230, but not reported as fixed). 16. Allow environment variable ETCPROFILE to specify the location on the /etc/profile script. 17. Fix TurboC 2.0 build 18. Fix bug in mail string handling 19. Fix bug in use of command line which falls to quote wildcards if UNIX mode is defined. 20. Temporary fix for TAB character in EMACS editing mode. 232 Beta Release 21. Fix two segement violations - file name completion (wrong include files on development system); and very long paths. 22. Started on NT port (5 versions!). See Note 7 below 23. Allow enable/disable of pipes as ttys (for EMACS under OS/2 and presumably NT) via PipeTTY option in sh.ini or SH_ALLOWTTYPIPES in the environment (either one set, enables pipes as ttys). 24. Fix cursor so it shows insert mode for VI and EMACS. 233 Beta Release 25. Improve other O/S program detection and reporting. 26. Allow specification of startup directory and environment variables on command line. 27. Allow DOS and OS/2 versions to auto-start Windows for Windows programs. This could be a real problem since detecting DOS only programs can be difficult. 28. Provide -t option to whence to tell user the program type. 29. Add ignoretype attribute to extended line file to allow user to tell DOS version to ignore the results of the executable file header examination. Some DOS programs have bad headers which make them look like OS/2 programs. 30. The shell tries to detect the underlying OS (Windows, OS/2 or NT). We detect Windows using int 0x2f. OS/2 from the OS version. No way of detected Win NT yet. So add 'set -o os2' and 'set -o winnt' as a temporary fix. 234 Beta Release 31. Fix bug in the checking of executable headers. Some OS/2 with .com extensions are actually .exe files. So check for exe header, then .com extension. 32. Revisited #23. Changed this to be a option in the ${EXTENDED_LINE} file. I think this only applies to EMACS on OS/2, set up the entry for emacs in this file to include the option 'pipetty'. For example: emacs = pipetty 33. Add option (quotewild) in the ${EXTENDED_LINE} to specify if wild cards in parameters should be double quoted. The default is not to. 34. Fix bug in the sh.ini keycodes to EMACS function keys mapping. 35. Fix bug in set -o 'option' which caused the loss of the editing mode. 36. Fix bug in EMACS filename completion so that ignorecase is honoured. 37. Fix bug in re-tracking of tracked aliases. 38. Fix bug in SECONDS variable handling. 40. Fix bug in array number expansion (like it didn't get done). 41. Bring forward EMACS initialisation so that Bind will work in the profiles. 42. Fix bug in tracked aliases which resulted in \s in the file name instead of /s. 43. Allow non-function keys in sh.ini to be bound for emacs editing. 44. Add some new options to the start command to allow some addition parameters to be specified: -h|H inherit current or start up environment -b background -x related session -O [pm|dos] change the default parameters the shell uses to start a PM or DOS program -O [pm|dos] -D display the parameters the shell uses to start a PM or DOS program 45. Fix some bugs in displaying functions. 46. Fix syntax of while ... do ... done. 47. Add catching of co-processes invokation and stop it at the moment. 48. Update manual pages for everything except PATHEXTS 49. Fix bug in starting Windows programs (and Windows) under DOS. 50. Use STARTWINP to define how to start a windows app when running under Windows. 51. Fix bug in cd with CDPATH. cd to . and .. should always go to the current or parent directory, irrespective of the CDPATH value. 52. EMX OS/2 port done 53. Fix bug in reporting of 'program not found' 235 Beta Release 54. Fix bug setting variables read-only - like it won't let you. 55. Fix bug in (( ... )), does not work. Forgot to set string is inside Double quotes. Its still not quite right, but it works. Try it in a function and list the function to see a problem. 56. Implement set -o which was missing. 57. Fix bug in [[ ]] in functions. 58. EMX DOS port started. 59. Fix bug in Mail checking functionality. 60. Fix bug in EMACS history search. 61. Changed console detection for MSDOS. Add check that /dev/con is the console. Otherwise, treate the stdin as a device. 62. Changes exec handling in MSDOS 16bit. Now do a spawn and exit so that all memory is available to the new process, in stead of having a 2K Memory Control Block down memory allocated to the shell. 63. In a script, if #!program cannot be found, strip the path and try that. 64. Variables exported in a function, lose their export status on completion of that function. Missing POSIX Shell functionality: I've looked at three different version of ksh (under AIX, HP UX and ICL's DN/X) and each one has something slightly different. In general, I believe the following functionality is missing from the shell, some of which can not be implemented under either MSDOS or OS/2. 1. Filename generation currently matches the Bourne and not the Korn shell Missing, not supportable. 1. The ulimit command - no MSDOS or OS/2 equivalent 2. The bg and fg commands are not implemented - no equivalent functionality. 3. The set -p (disable $HOME/.profile processing) has not been implemented. 4. The ~ at the start of a word only supports the $HOME, $PWD or $OLDPWD substitutions. There's no /etc/passwd. 5. TMOUT is not implemented, what's functionality under MSDOS or OS/2 I ask? 6. jobs under MSDOS - HA! 7. Co-processes. Again, really difficult to implement under MSDOS and OS/2 (I think). The following enhancements/bugs remain outstanding: 1. Interrupting a swap at the wrong time may cause the shell to hang. I've not been able to track this down. I think it may be some funny interaction with Quaterdesk's QEMM memory manager, since it does not happen with any other memory manager. 2. Under IBM's OS/2 C Set/2, the umask API does not work correctly. umask (0) returns an error, when it should return the current value. 3. Under WATCOM and OS/2, the DosQProcStatus API causes a core dump, so the jobs function is disabled in versions built with WATCOM. WATCOM have been informed - no response. Use ps.exe instead. The shell fex's ps.exe so if you use jobs, stick ps.exe in your path. 4. Under OS/2 in 16-bit mode, the DosStartSession API causes the system to died with dependent sessions. Sessions are always independent. IBM (UK) have been informed - no response. Microsoft haven't. 5. I've built and run the Borland Turbo C version, but not really done extensive testing on it. The main development and release compiler remains Microsoft C5.1 (for MSDOS), C6.0 (for OS/2) NT SDK (for NT) and WATCOM for the 32-bit versions. 6. I've built and tested the OS/2 2.2 32-bit version using IBM C Set/2, and extensively tested using that version. However, I am no longer in a position to build using this compiler. Release 2.2 and later have not been fully tested for the IBM C Set/2 OS/2 32-bit version. 7. Windows NT. I've run the 16-bit DOS version on NT. The 32-bit DOS version does not work. A real NT version is 99% there - jobs do not appear to work - WaitForSingleObject and cwait fail. Any ideas? 8. For a number of reasons, the EMX version cannot be used on DOS (dup2 does not work reliably, spawn does not handle non-EMX apps). Thanks are due to all the people on the Internet who comment on, tested, put up with me, and generally 'bash'ed the shell about for their comments, fixes, tolerance etc. in testing release 2.3 Ian Stewartson.