koren@hpfelg.HP.COM (Steve Koren) (01/15/90)
SKsh 1.3 is now available; I have sent it to both Tad Guy and Fred Fish. 1.3 has many user requested enhancements; look for more in 1.4, which I hope to finish in 3 to 4 months. - steve ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CUT HERE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [title page deleted to save space] Addendum to Version 1.3 This document describes additions and changes to SKsh since version 1.2. Hidden Bit Support The 'ls' command now omits files from the directory listing if they have the 'hidden' (h) bit set. To see hidden files, use the 'h' option to the ls command. cd bug fixed SKsh will now report an error if the destination of a 'cd' command is a file. touch bug fixed Touching an empty directory will no longer convert it to a file. extname command added An 'extname' command was added which complements the 'dirname' and 'basename' commands. It will print either the extension of a filename, or the portion of the file name which is not the extension (when given the 'v' option). For example, 'extname foo.bar' would print 'bar', while 'extname -v foo.bar' would print 'foo'. extname can also print the part of the file name which is not the extension, if given the -v option. Spaces now passed correctly to external commands SKsh now passes arguments with spaces correctly to external commands (by surrounding them with double quotes). It should have been doing this all along. window command added An external command has been added which can be used to move the window, resize the window, change the window title, move the window to the back or front, report the current window position, report the current window size, report the current window title, report the screen size, or report the mouse position relative to the window or screen. See the documentation on the 'window' command for details. SKSH Amiga Shell Page 2 Addendum to 1.3 Overstrike mode for command line editing There is now an overstrike mode for command line editing. The mode can be toggled between insert and overstrike by using the '^z' key. Also, two new options flags support overstrike mode. If the 'O' options is set, overstrike becomes the default instead of insert. If the '1' flag is set, the mode is changed back to the current default upon return; otherwise it remains as is. There is currently a small bug with overstrike mode that causes it to print a character in the wrong position if characters are typed when the left most section of a long line is displayed and the cursor is at the right edge of the window. If this occurs, you can use '^l' to correct the situation. I didn't think this was serious enough to warrant spending a lot of time hunting it down, since it is a corner case. I will probably fix it later. New command line editing functions The '^g' key has now been mapped to abort the current command line. This is easier to type than the two character dipthong '^a^k'. The sequence esc-/ has been mapped to insert the 'tail' of the previous command line; that is, all of the previous line except the first word. It is similar in operation to the esc-. command. Both esc-. and esc-/ now insert a space if there was not one there already, and if they are not invoked at the beginning of the line. which -s bug fixed A minor bug with the 'which -s' command was causing it to print a newline instead of exitting silently if the command was not found. This has been fixed. info command extended The 'info' command now reports the number of free kilobytes on the device as well as the number of used kilobytes. touch, cp -c now reset archive bit The 'touch' and 'cp -c' commands now reset the AmigaDos archive bit. SKSH Amiga Shell Page 3 Addendum to 1.3 Error report bug fixed There was a bug in the previous error reporting routine which caused a buffer overflow error if a long error message was encountered (such as would be the case for a very long file name which was not found). This has been fixed. Error messages can now be much longer, and they are truncated to a manageable length. -a (all) option added to info A '-a' flag was added to the info command which reports information on all filesystem volumes. Unmounted filesystems are silently skipped. -b (builtin) option added to unset It is now possible to unset builtin commands as well as aliases, functions, and variables. This makes it easier for people who wish to use an external command instead of the SKsh builtin version. The memory taken by the code is not actually freed, but after a builtin is unset, it is no longer possible to use that builtin short of restarting SKsh. Note that this is a dangerous thing to do; you can inadvertently unset a builtin such as 'shift' or 'exit' which is need for proper operation of the shell. In fact, you can even unset the 'unset' builtin itself, although I wouldn't recommend doing this. Only use this command if you are sure you know what you are doing. The other unset commands have aliases such as 'unalias' to make them easier to type and remember; this one comes with no such alias. A future version of SKsh ("tiny-SKsh") will be provided which only contains a few of the necessary builtins, and eliminates the rest to save space. join command added A new "join" command has been added which allows textual or binary data to be concatenated and the results sent to another file. See the documentation on that command for details. SKSH Amiga Shell Page 4 Addendum to 1.3 Unmounted volumes in path no longer searched If your SKsh path includes unmounted volumes, the disk requester will no longer appear. The unmounted volumes are ignored. This allows you to, for example, include df0:c in your path without having a disk in df0:. In addition, the cd command no longer causes the disk requester to appear if the destination directory is on an unmounted volume. This behavior is changeable with the 'U' option, which is described below. chmod with - option no longer sets rewd bits In SKsh 1.2, a chmod command which reset any of the high four bits also set the low four bits, even if they were not set to begin with. This has been fixed. wc bug on large files fixed There was a bug in version 5.02 of the Lattice compiler which caused wc to report improper character and word counts for very large files. wc is now compiled with version 5.04 of the compiler, and this bug is fixed. wc no longer truncates file names If wc is passed file names longer than 16 characters, they will no longer be truncated. cat now reads standard input properly The cat command now properly reads standard input if redirected from a file or a pipeline. External commands now optimized The external commands are now optimized, reducing their size slightly and, at least in theory, making them faster. History list length limit removed In versions 1.2 and earlier, there was an arbitrary limit of 256 lines in the history list at one time. Since this limit was completely arbitrary, it has been extended to 32000 lines. The list length is controlled by the HISTSIZE variable; memory usage can be reduced by making this variable a small number. SKSH Amiga Shell Page 5 Addendum to 1.3 History searches now can examine only line prefix History searches previously would match text occurring any place within a line. Some people prefer a search which matches only a line prefix; this has been added as an option. The default is the original method; however, setting the 'P' option forces history searches to match a line prefix. 'x' added as an synonym for 'e' in chmod command An 'x' can now be used as a synonym for 'e' in the chmod command, making this command operate more like its Un*x equivalent. getenv bug fixed SKsh has been recompiled with a latter version of the Lattice compiler which fixes the getenv problem. getenv now works properly, and it is no longer necessary to use the AmigaDos getenv call. Case insensitive file name expansion, wildcards, etc. There is now an option to make command line file name expansion, wildcard card file expansion, and a few other things case insensitive. If the 'c' option to SKsh is set, all wildcard expansions will be case insensitive. This applies also to commands such as 'aliases', 'functions', 'set', and 'match'. Anything that previously accepted a wildcard pattern will now be case insensitive if the 'c' flag is set. This flag is set for you in the new .skshinit file, which should be installed in place of the old one. Wildcard pattern matching changed The wildcard expansion routines have been changed slightly to better conform to the Un*x behavior. If a pattern does not match any files, the pattern itself is returned. For example, 'echo blah*' does in fact echo 'blah*' if the pattern matches no files. This will cause most commands which deal with files to return an error message. ls now reports an error upon file not found The ls command now reports an error message if any of the files specified on the command line are not found. SKSH Amiga Shell Page 6 Addendum to 1.3 tail error reporting bug fixed A minor bug in the tail command has been fixed. The error message printed if a file couldn't be found was missing a trailing newline; this has been added. mkdir bug fixed mkdir no longer changes files to directories if the file existed previously. This was actually a bug in the Lattice mkdir() function, which was not reporting an error code if a file with the same name as the new directory existed. '*' in filename bug fixed A file with a '*' or '?' in the filename will no longer crash the shell if it is listed explicitly or matched with a pattern. Previously, the pattern matching code was calling itself recursively and infinitely in this case. It no longer does this. expr bug fixed 'expr 1 / 0' no longer crashes SKsh. It now gives a result of zero. -m added to test expressions A -m switch was added to test expressions which allows a device to be tested to see whether it contains a mounted disk. For example, 'c:' will be "mounted" if it points to a real location on a physical disk, and "df1:" will be mounted if it contains a floppy disk. The -m switch will return true if given a null argument (""). Also, it can be passed a device and path name, in which case the path portion will be ignored. This feature is often convenient in scripts. -ot, -nt added to test expressions Two new tests were added which determine whether a given file is older than or newer than another. If the files are the same age (perhaps because they are the same file), false is returned for either test. SKSH Amiga Shell Page 7 Addendum to 1.3 U option added A new 'U' option was added which, if set, will cause a requester to appear when SKsh sees an unmounted volume in the path. This flag is normally reset. Infinite recursion no longer prints *** break Previously, if SKsh caught what it believed to be infinite recursion in a function or alias, it would print "*** break" to the console. This no longer happens; the break message is printed only if ^c is used to interrupt a pending operation. Function key bug fixed With the 'h' option set, lines that are entered with the function keys can now be edited. chmod now continues after error If chmod is unable to change the permissions on a file, it now continues and attempts to process the rest of the files in the argument list. It previously stopped after the first error was encountered. File name completion extended In addition to being optionally non case sensitive, file name completion now works in the middle of a line. That is, the cursor no longer has to be at the end of line. This feature works with <tab> (esc-esc), <esc>*, and <esc>= style completion mechanisms. The new text will be inserted into the proper place in the command line. rm -r bug fixed In SKsh 1.2, an rm -r on a nonexistant file rather rudely crashed the system. This no longer happens, and a sensible error message is printed instead. return bug fixed The return statement now operates correctly in scripts. Previously, it only worked in functions, but had no effect when used in a script. SKSH Amiga Shell Page 8 Addendum to 1.3 Documentation updates As always, I have tried to keep the UserMan and Reference documents up to date with the lattest changes and additions. Also, a new ErrorCodes.doc file is included which lists each SKsh error code. New Files A new file, called "Stuff.sksh" has been included. This file contains some useful functions and aliases. It is not by default loaded by SKsh; it is intended to be a source of functions which can be cut out and placed into a .skshrc file. Alternatively, if all the functions and aliases of the Stuff.sksh file are desired, it can be copied to the sksh: directory and sourced from the .skshrc file with the following line: . sksh:Stuff.sksh The Stuff.sksh file currently contains a "man" function for accessing online manual pages, a "qrm" function to query before deleting files, "pushd", "popd", and "cleard" commands to implement a directory stack, and a few other things as well. The file may grow in future versions of Sksh. Comments in the file explain the operation of each command. Notes There are a few things that may appear to be SKsh bugs, but in reality are AmigaDos problems: * Append redirection does not work with external binaries. This is NOT an SKsh bug; the Amiga uses two distinct methods of file I/O which do not coexist well. SKsh uses one method which is standard among compilers and operating systems; however certain things on the Amiga must be done with the other method, and problems arise as a result. It would be *possible* to fix this problem in SKsh, but as a matter of principle I won't do it. It is really a DOS architecture problem, and shouldn't need to be fixed in application programs. * The SKsh file I/O is slower than it should be. This is, again, caused by the two disjoint file I/O methods; the standard mechanisms are much slower than the other method. This could also be fixed in SKsh, but again as a matter of principle I won't. SKSH Amiga Shell Page 9 Addendum to 1.3 * Resetting the 'w' bit on a file, and then "cat"ing another file to that one will overwrite the first file, even though the 'w' bit is not set. This is, again, an AmigaDos problem; the fopen() call succeeds when it should fail. Applications should not have to check this flag on each fopen. Hopefully this will be fixed in a future version of AmigaDos. There are similar problems with the 'r' flag. That said, I should point out that even though AmigaDos has certain bugs and architectural problems, it is nonetheless one of the best PC operating systems; it provides many features such as shared libraries, multitasking, and multiple screens which other micro operating systems do not yet have. Commodore is also steadily improving the OS, fixing bugs, and adding new features. There are a few other things to note: * SKsh needs the latest version of ARP installed. If an early ARP is used, there could be problems invoking certain programs. If you have these problems, check your version of ARP and obtain a more recent one if necessary. * Since SKsh uses its own notion of a PATH, certain programs may still look at the AmigaDos path, and hence require that to be set. This is OK; the two path mechanisms will not interfere with each other. As a final note, I would like to thank everyone who made suggestions and reported bugs. These people are too numerious to mention individually, but nonetheless have contributed to SKsh in an important way. Many of the improvements in SKsh 1.3 came directly from user suggestions. SKSH Amiga Shell Page 10 Addendum to 1.3
koren@hpfelg.HP.COM (Steve Koren) (01/20/90)
I have recently become aware of two problems that arise when SKsh is used with conman: 1) Typeahead is disable with conman. I have no idea why this is, but there is nothing I can do about it inside SKsh. 2) If you move the cursor to the middle of a line and press return, conman will blank the rest of the line. I might be able to fix this by re-printing the line when the user presses return, but this seems a bit kludgy. Neither of these problems appear with the normal AmigaDos console handler, so if you like SKsh's editing, you might want to use that. If you want to use conman's editing, you can turn off the SKsh editing with an option switch, but you'll lose all of the nice features like filename completion and history searches. - steve PS - also, a big thank you is owed to Tad Guy for getting Sksh1.3 out the door so quickly.
kevin@auric.UUCP (Kevin-Neil Klop) (01/22/90)
In article <13920038@hpfelg.HP.COM> koren@hpfelg.HP.COM (Steve Koren) writes: > >I have recently become aware of two problems that arise when SKsh is used >with conman: > > 1) Typeahead is disable with conman. I have no idea why this is, but > there is nothing I can do about it inside SKsh. > > 2) If you move the cursor to the middle of a line and press return, > conman will blank the rest of the line. I might be able to fix > this by re-printing the line when the user presses return, but > this seems a bit kludgy. > Are you sure that it's conman? I use conman all the time, both with the Amiga Shell, and with WShell. Neither one of them exhibit the symptoms of which you describe. -- Kevin -- -- Kevin Klop {uunet|rutgers|amiga}!cbmvax!kevin Commodore-Amiga, Inc. The number, 111-111-1111 has been changed. The new number is: 134-253-2452-243556-678893-3567875645434-4456789432576-385972 Disclaimer: _I_ don't know what I said, much less my employer.
koren@hpfelg.HP.COM (Steve Koren) (01/23/90)
> >I have recently become aware of two problems that arise when SKsh is used > > with conman: > > 1) Typeahead is disable with conman. I have no idea why this is, but > > > > 2) If you move the cursor to the middle of a line and press return, > > conman will blank the rest of the line. I might be able to fix > Are you sure that it's conman? I use conman all the time, both with the > Amiga Shell, and with WShell. Neither one of them exhibit the symptoms > of which you describe. Not 100% sure, since I don't have ConMan myself. However, I have received mail from many (~ 15) people who say that those two things work without ConMan, and break with it. Perhaps it is only some versions of ConMan? I know they work fine without it, since I have tested them both extensively with the normal AmigaDos console handler and both SKsh and Matt's csh (3.02). Oh, this just occurred to me. If you run SKsh on top of conman, both of them will think they are supposed to do command line editing (unless you turn off editing in SKsh). There could be some conflicts between the two. Can someone who was having this problem tell me if it still arises with the SKsh editing turned off (with the 'e' flag) and conman installed? - steve
) Seaman) (01/25/90)
koren@hpfelg.HP.COM (Steve Koren) writes:
< > >I have recently become aware of two problems that arise when SKsh is used
< > > with conman:
< > > 1) Typeahead is disable with conman. I have no idea why this is, but
< > >
< > > 2) If you move the cursor to the middle of a line and press return,
< > > conman will blank the rest of the line. I might be able to fix
<
< Oh, this just occurred to me. If you run SKsh on top of conman, both
< of them will think they are supposed to do command line editing (unless
< you turn off editing in SKsh). There could be some conflicts between
< the two. Can someone who was having this problem tell me if it still
< arises with the SKsh editing turned off (with the 'e' flag) and conman
< installed?
<
< - steve
I use conman, and found that turning off sksh command line editing does
cure both problems. Too bad, too, because I like file name completion,
but I like the other benefits of conman more.
--
Chris (Insert phrase here) Seaman | /|__|\__/|__|\
crs@cpsc6a.att.com <or> | | | Where does he get
...!att!cpsc6a!crs | | /\/\ /\/\ | those Wonderful toys?
The Home of the Killer Smiley | \| \/ |/