Without a few extra ';' between language elements, the parser doesn't see the keywords as keywords, and instead they get fed into the code generator as arguments to the preceding keyword. Testing the same test code against the version of bash with MSYS1.0, their shell doesn't give a hoot, nor should any other bourne-style shell I have access to. So in a way, you could say my code took a stricter interpretation of the sh script syntax, then what is required (and desired).
Somehow this actually makes me feel better, lol.
Also something that needs working on, is dealing with crappy old-style paths like CP/M, DOS, and Windows NT use.
$ P:/Editors/Vim/vim-personal/gvim.exe tpsh: command not found: P:/Editors/Vim/vim-personal/gvim.exe at S:\Visual Studio 2008\Projects\tpsh-dir\tpsh line 883. $ cd P: $ P:/Editors/Vim/vim-personal/gvim.exe tpsh: command not found: P:/Editors/Vim/vim-personal/gvim.exe at S:\Visual Studio 2008\Projects\tpsh-dir\tpsh line 883. $ /Editors/Vim/vim-personal/gvim.exe $
It seems to have a bit of an issue about drive letters.
In more detail, the search_path() function that converts an external command name into the direct path to it (done in order to avoid a dependency on the systems shell, e.g. /bin/sh or %COMSPEC%), fails to find a valid file when the drive-letter: notation is used. Since the function returns undef to indicate program not found, simply put search_path() needs fixing. The change should be trivial though.