TODO for AT&T ksh93, 93u+m bugfix branch ______ Fix regression test failures: - On OpenBSD, there are 15 locale-related test failures in variables.sh. - There are many regression test failures on NetBSD. ______ Fix build system: - ksh does not currently build on AIX or QNX. - On NetBSD 9.0, the build fails if /bin/sh is used as $SHELL (the default) as iffe writes line numbers directly into generated header files. The cause needs to be investigated. It could be a regression in NetBSD 9.0 sh. Workaround: bin/package make SHELL=/some/other/shell - Reimport the removed nmake. It is necessary for changes in Makefiles to take effect. The machine-generated Mamfiles are now used as a fallback, but they are not meant to be edited by hand. ______ Fix currently known bugs affecting shell scripting. These are identified by their modernish IDs. For exact details, see code/comments in: https://github.com/modernish/modernish/tree/0.16/lib/modernish/cap/ - BUG_BRACQUOT: shell quoting within bracket patterns has no effect. This bug means the '-' retains it special meaning of 'character range', and an initial ! (and, on some shells, ^) retains the meaning of negation, even in quoted strings within bracket patterns, including quoted variables. - BUG_CMDEXPAN: if the 'command' command results from an expansion, it acts like 'command -v', showing the path of the command instead of executing it. For example: v=command; "$v" ls or set -- command ls; "$@" don't work. See also: https://github.com/att/ast/issues/963 - BUG_CMDSPEXIT: preceding a "special builtin"[*] (other than 'eval', 'exec', 'return' or 'exit') with 'command' does not always stop it from exiting the shell if the builtin encounters error. [*] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_14 - BUG_CSUBSTDO: If standard output (file descriptor 1) is closed before entering a $(command substitution), and any other file descriptors are redirected within the command substitution, commands such as 'echo' will not work within the command substitution, acting as if standard output is still closed. - BUG_IFSGLOBS: In glob pattern matching (as in case or parameter substitution with # and %), if IFS starts with ? or * and the "$*" parameter expansion inserts any IFS separator characters, those characters are erroneously interpreted as wildcards when quoted "$*" is used as the glob pattern. - BUG_LOOPRET2: If a 'return' command is given without a status argument within the set of conditional commands in a 'while' or 'until' loop (i.e., between 'while'/'until' and 'do'), the exit status passed down from the previous command is ignored and the function returns with status 0 instead.