- FIX: Bombs occurred when executing an external program via _shell_p. Gulam was reinitialising _shell_p after each command, including mid execution of _shell_p which requires the caller to use super mode. Now, _shell_p is init'd only when Gulam is in user mode.
New shell variable: restore_cwd_after_exec. When true (false by default), the cwd can never be changed by an external command as the cwd is stored before and restored after command execution.
How the environment (argv,envp) is constructed for internal and external commands has been modified:
- FIX: The length of the command line buffer is stored as an 'int' by Gulam. Length is stored as 'uchar' in the Pexec command line. Previously it was assigned without checking for truncation.
- FIX: The maxium length of the DTA section command line is 125 bytes (as per tos_hyp). Previously it was treated as 126 bytes.
- CHG: The value 'mw' (Mark Williams) for the shell variable 'env_style' has been renamed 'argv'. Since it implemented what became known as the basic argv protocol anyway, I beleive this is clearer.
- NEW: The argv protocol is enabled by default.
- NEW: The argv protocol is now only used when enabled and necessary. This improves compatibility with programs that don't understand the protocol. Previously, if the argv env_style was enabled, the command line length embedded in Pexec calls was always set to 127. This was always invalid for such programs.
- NEW: If the argv protocol is disabled but the command line is too long, the user is prompted whether to continue.
- FIX. Previously the standard command lines (i.e. not argv) of external commands were stripped of quotes meaning that quoted strings were tokenized on all spaces.
Changes to file type determination:
- NEW: APP and GTP are now considered executable.
- FIX: Previously, a directory that happened to have an executable extension would have been identified as a file, not a directory.
General changes:
- NEW: The cursor is made visible at the start of every command prompt.